cours d'informatique industrielle

165
˜

Upload: others

Post on 06-Jan-2022

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours d'Informatique Industrielle

année L3Université de Caen Fillière EEA-IE-EIA

Version du

\ThesisDate

Coursd'InformatiqueIndustrielle

Responsable Pédagogique :

Eric Magarotto

☎ : 02 31 45 27 09,email : [email protected]

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

Page 2: Cours d'Informatique Industrielle

Table des matières

Chapitre 1Architecture - Principes Généraux

1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1 Un peu d'histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 Modèles d'architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Structure : composants principaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1 Le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.2 Mémoire Principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.2.3 Mémoires Secondaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3 Echanges de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.3.1 Généralités sur les communications . . . . . . . . . . . . . . . . . . . . . . . . 161.3.2 Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.3.3 Techniques d'échange de données . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.4 Système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.4.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.4.2 Les critères de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.4.3 BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.4.4 DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Chapitre 2Les Bus

2.1 Caractéristiques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.2 Bus processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.2.1 Bus de données interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.2.2 Bus frontal, de données externes . . . . . . . . . . . . . . . . . . . . . . . . . 332.2.3 Bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.2.4 Bus de mémoire cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.3 Bus d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.3.1 Bus parallèles : ISA-EISA, MCA-VLB, PCI, IDE-EIDE, AGP, SCSI . . . . . 36

Page 3: Cours d'Informatique Industrielle

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 . . . . . . 382.4 Bus de périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.4.1 USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.4.2 IEEE1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.4.3 IEEE488 (GPIB et HPIB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.5 Bus embarqués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.5.1 PCCard (ancien PCMCIA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.5.2 Bus CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

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

Chapitre 3Interruptions

3.1 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.1.1 Interruption matérielle et logicielle . . . . . . . . . . . . . . . . . . . . . . . . 44

3.2 Système d'interruptions hiérarchisées . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.3 Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4 Mécanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.4.1 Identi�cation de la source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.4.2 Vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.4.3 Actions à entreprendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.4.4 Reprise du programme interrompu . . . . . . . . . . . . . . . . . . . . . . . . 493.4.5 Le partage des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.5 Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.5.1 Architecture du PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.5.2 Programmer le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3.6 Gestion des Entrées-Sorties par interruption . . . . . . . . . . . . . . . . . . . . . . . 543.7 Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.7.1 Interruptions BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.7.2 Interruptions DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.8 La programmation des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.8.1 Fonctions liées aux interruptions . . . . . . . . . . . . . . . . . . . . . . . . . 57

Chapitre 4Port Parallèle

4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.1.1 Principales Caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.1.2 Norme IEEE 1284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

i

Page 4: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Table des matières

4.1.3 Signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.1.4 Protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.2 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.2.1 Mode standard SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.2.2 Mode étendu EPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.2.3 Mode étendu ECP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.3.1 Interruption logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.3.2 Tableau des registres pour tous les modes . . . . . . . . . . . . . . . . . . . . 67

Chapitre 5Port Série

5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.1.1 Format et Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.1.2 Norme RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.1.3 Brochage du port série standard . . . . . . . . . . . . . . . . . . . . . . . . . 715.1.4 Description des signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.1.5 Modalités de transmission (simplex-duplex) . . . . . . . . . . . . . . . . . . . 73

5.2 Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.2.1 Liaison DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.2.2 Liaison DTE-DTE sans contrôle de �ux . . . . . . . . . . . . . . . . . . . . . 755.2.3 Liaison DTE-DTE avec contrôle de �ux matériel . . . . . . . . . . . . . . . . 765.2.4 Liaison DTE-DTE avec contrôle de �ux logiciel . . . . . . . . . . . . . . . . . 79

5.3 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.3.1 Algorithme Xon-Xo� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.3.2 Procédure de test : rebouclage entrées / sorties . . . . . . . . . . . . . . . . . 805.3.3 Comment reconnaître un DTE d'un DCE? . . . . . . . . . . . . . . . . . . . 805.3.4 Protocole d'échange sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.3.5 Algorithmes émission - réception d'un caractère . . . . . . . . . . . . . . . . . 81

Chapitre 6UART

6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.1.2 Avantages de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

6.2 Con�guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.3 Les Registres de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

ii

Page 5: Cours d'Informatique Industrielle

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

6.3.1 RBR/THR émission/réception . . . . . . . . . . . . . . . . . . . . . . . . . 856.3.2 DLL / DLM vitesse de transmission . . . . . . . . . . . . . . . . . . . . . . 876.3.3 IER autorisation d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . 876.3.4 IIR nature des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.3.5 FCR réglages des bu�er FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . 886.3.6 LCR réglages de la transmission . . . . . . . . . . . . . . . . . . . . . . . . . 906.3.7 MCR réglages du modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.3.8 LSR état de la transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.3.9 MSR état du modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.3.10 SCR réglages pour une horloge externe . . . . . . . . . . . . . . . . . . . . . 92

6.4 Programmer l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.4.1 Par scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.4.2 Par interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

6.5 Annexe : architecture interne d'un UART 16550 . . . . . . . . . . . . . . . . . . . . . 95

Chapitre 7I2C

7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.1.1 Présentation et domaine d'application . . . . . . . . . . . . . . . . . . . . . . 967.1.2 Caractéristiques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977.1.3 Nouvelle caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.2 Le protocole I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.2.1 Les 2 modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . 987.2.2 La validité des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.2.3 Les conditions de début / �n . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.2.4 La transmission de données d'un octet . . . . . . . . . . . . . . . . . . . . . . 100

7.3 La gestion des con�its . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.3.1 La synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.3.2 L'arbitrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

7.4 L'adressage des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.4.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.4.2 Adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.4.3 Adresses réservées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

7.5 Mode de transfert en adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . 1047.5.1 Ecriture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047.5.2 Lecture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.5.3 Format combiné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

iii

Page 6: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Table des matières

7.5.4 Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.6 Mode de transfert en adressage étendu . . . . . . . . . . . . . . . . . . . . . . . . . . 106

7.6.1 Adressage étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.6.2 Ecriture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.6.3 Lecture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.6.4 Formats combinés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

7.7 La programmation du bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Chapitre 8USB

8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.1.1 USB 1.1 et 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.1.2 Câbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108.1.3 Topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.2 Transactions et Transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.2.1 Modes de transmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.2.2 �PIPE� : Préliminaire à la communication . . . . . . . . . . . . . . . . . . . . 1138.2.3 Phases de transactions (protocole) . . . . . . . . . . . . . . . . . . . . . . . . 1138.2.4 Modes de transferts des paquets (terminaisons) . . . . . . . . . . . . . . . . . 1138.2.5 Séquencement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

8.3 Protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148.3.1 PIPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.3.2 Trame de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.3.3 Format des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178.3.4 Types de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178.3.5 Champs des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.3.6 Détection d'erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

8.4 Types de transferts (terminaisons) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218.4.1 Control Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218.4.2 Bulk Data Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238.4.3 Interrupts Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248.4.4 Isochronous Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

8.5 Enumération et Descripteurs USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258.5.1 Enumération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258.5.2 Descripteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

8.6 Sur votre PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

iv

Page 7: Cours d'Informatique Industrielle

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

Chapitre 9IEEE-1394

9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.1.1 FireWire ? IEEE 1394 ? i-Link ? . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.1.2 Avantages de L'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.1.3 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

9.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.2.1 Chipset VIA Fire xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.2.2 Un bus standard ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.2.3 Câbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.2.4 Norme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

9.3 Fonctionnement du bus FireWire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319.3.1 Caractéristiques principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

9.4 Un protocole, trois couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1339.5 Une couche physique optimisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359.6 Un arbitrage e�cace et juste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359.7 Plug and Play et Hot Plugging ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369.8 IEEE 1394 b, des améliorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369.9 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Chapitre 10Acquisition de Données - Temps Réel

10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13810.2 Structure générale d'un système de mesure . . . . . . . . . . . . . . . . . . . . . . . . 139

10.2.1 Les Capteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13910.2.2 Le conditionnement du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . 13910.2.3 Le multiplexage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14010.2.4 La Conversion (CNA et CAN) . . . . . . . . . . . . . . . . . . . . . . . . . 14010.2.5 Le Logiciel d'Acquisition et de Traitement . . . . . . . . . . . . . . . . . . . . 14010.2.6 Les �Timer� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

10.3 Généralités sur les cartes E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14110.4 Etude sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . . . . . . . 141

10.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14110.4.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14210.4.3 Etude du Timer 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

10.5 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14910.5.1 Les Fonctions du Langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

v

Page 8: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Table des matières

10.5.2 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14910.6 Tableau récapitulatif des adresses de la carte �Impulsion� . . . . . . . . . . . . . . . 14910.7 Registres du Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Chapitre 11Conclusion

Liste des �gures 152

Liste des tableaux 156

Bibliographie 157

vi

Page 9: Cours d'Informatique Industrielle

Chapitre 1

Architecture - Principes Généraux

Sommaire1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Structure : composants principaux . . . . . . . . . . . . . . . . . . . . . . 41.3 Echanges de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.4 Système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.1 IntroductionUn 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 e�ectuant des traitements quelconques puis de larestituer sous une autre forme. La suite des instructions décrivant la façon dont l'ordinateur doite�ectuer 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 niveaucorrespond 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 machinesactuelles. 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équationtechnologique. La première véritable machine fut donc celle d'Aiken (en 1944) à base de relaiset 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 chi�rage (cryptage et codage) et on aboutira àla construction du premier ordinateur électronique (COLOSSUS) auquel Turing a fortementparticipé. Mauchley et Eckert achevèrent une machine (ENIAC) utilisant des tubes à videset des relais (30 tonnes, 20 registres de 10 chi�res) en 1946. Un des participants au projetENIAC, Von Neumann construisit l'IAS (1952) qui constitue encore aujourd'hui, l'architecture

1

Page 10: Cours d'Informatique Industrielle

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

de base de la plupart de nos ordinateurs. Pendant ce temps, l'entreprise Eckert-Mauchley futla première à commercialiser un ordinateur, l'UNIVAC. Plusieurs entreprises telles que IBMou 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, Brattainet Shockley fut délivré en 1956 pour l'invention en 1948 chez Bell Labs du transistor. Ceciré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 constructionde diverses machines (1401, 7094).En 1964, CDC construit une machine avec une architectureparallèle, le 6600 dont Cray est l'architecte. La course à la puissance était lancée, symboliséepar le Gamma60 de Bull. La prise de conscience de l'importance du logiciel se fait à cetteépoque (Algol, ancêtre du Pascal) mais n'in�ue pas encore sur la construction de matérieldé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 quidota toute la gamme avec le même langage d'assemblage et instaura la multiprogrammationqui 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 deDEC dans le secteur de la mini-informatique.

génération 4 - les VLSI (1980- ?) : Les VLSI (Very Large Scale Integration) permettent, dansles années 80, l'intégration de milliers, puis de millions de transistors sur une puce, favorisantla miniaturisation et l'augmentation de la rapidité de traitement. Les prix chutant, l'ère del'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'AppleII conçues par Jobs et Wozniak. IBM répliqua avec le PC (qui utilisa le 8088) en 1981 etbattit 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) etWindows (utilisant la couche DOS). Au milieu des années 80, l'architecture RISC commençaa remplacer CISC, jugée trop complexe. Le superscalaire débuta en 1990 . . .

1.1.2 Modèles d'architectures1.1.2.1 Architecture en couches

La �gure 1.1 représente une hiérarchie qui caractérise l'architecture d'une machine standard. Aufur et à mesure que l'on monte dans la hiérarchie, l'abstraction est plus importante (à un niveaudonné 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 applicationlangages d'application : ces langages sont le plus souvent l'a�aire 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 scienti�ques. 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 lesproblèmes scienti�ques.

langage d'assemblage : c'est l'expression symbolique du langage propre à la machine. Celangage est constitué de mnémoniques qui décrivent le jeu d'instruction du processeur.Il est en e�et très di�cile (voire impossible) de programmer la machine en binaire di-

2

Page 11: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.1. Introduction

rectement, c'est pourquoi l'utilisateur qui veut travailler en utilisant les instructions duprocesseur, programme en langage d'assemblage. Un compilateur appelé assembleur per-met de traduire ce langage symbolique en langage binaire (niveau macromachine).

� couche systèmesystème d'exploitation : un ordinateur nu est inexploitable. Le rôle du système d'exploita-

tion est d'o�rir à l'utilisateur un ensemble de services permettant d'utiliser les ressourcesde la machine (mémoire, clavier ...). Le langage associé est composé de commandes quepeut exécuter ce système (Unix, Linux, WindowsNT, WindowsXP ...).

macromachine ou couche ISA : il s'agit essentiellement du processeur de la machine (Pen-tium, Athlon, PowerPC ...). Le langage associé est composé par le jeu d'instruction duprocesseur (langage machine du processeur ou langage binaire).

micromachine ou micro-architecture : l'exécution d'une instruction du langage machineest une opération qui nécessite également une opération de traduction en une séquencede microopérations. Ce niveau est invisible par l'utilisateur mais constitue un niveauimportant pour le concepteur du processeur. Le langage associé est composé de micro-instructions que peut exécuter le processeur.

machine physique ou couche logique : a ce niveau on décrit les composants électroniquesqui composent l'ordinateur. Le langage associé est constitué des signaux logiques 0 et 1.

Chapitre 1

Fonctionnement d’un processeur

1.1 Introduction

Dans ce chapitre nous rappelons l’architecture générique d’un ordinateur et les diffé-rentes unités fonctionnelles d’un processeur. Certaines de ces unités ainsi que la mémoiredes ordinateur ont été étudiées dans le cours de deuxième année.

1.2 Architecture multi-niveaux

Un ordinateur peut être considéré comme une hiérarchie de niveaux. A chaque niveaucorrespond une machine virtuelle et un langage associé (voir figure 1.1).

Langages d’application

Langages évolués

Langages d’assemblage

Macro-machine

Micro-machine

Machine physique

Système d’exploitation

Applications

Système

langage binaire

micro-instructions

instructions machine

Linux, WindowsNT, ...

Assembleur

Ada, Pascal, C, ...

langages spécialisés

Fig. 1.1 – Hiérarchie de niveaux

3

�gure 1.1: Architecture en couches

1.1.2.2 Architecture de Von NeumannLa proposition de Von Neumann est encore aujourd'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.2donne le schéma simpli�é de cette machine.

3

Page 12: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 lacirculation 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 : lebus 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

Page 13: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.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égrationet 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� dusystème. Il est parfois appelé CPU (Central Processing Unit) et est caractérisé par sa fréquenced'horloge (en MHz), sa largeur des bus de données et d'adresse, sa mémoire adressable, le nombrede transistors 1 et la taille de la gravure (en microns). Ses performances sont caractérisées parle CPI (Cycle Par Instruction) et le MIPS (Millions d'Instructions Par Secondes) qui dépendentdirectement 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 commande2. 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'échanged'informations (voir �gure 1.4).

1Loi de Moore : pour le moment, cette loi (le nombre de transistors intégrés sur les circuits double tous les 18mois) est toujours respectée.

2Il existe deux types de registres : registre d'usage général (BP) connecté au bus de données et les registresd'adresses (PP : registre pointeur et SP : pointeur de pile LIFO) connectés au bus d'adresses.

5

Page 14: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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âchedu programmeur, on utilisera le langage assembleur (propre à chaque microprocesseur) composéde mnémoniques (opérations de transfert, arithmétiques et logiques). Pour éviter la di�culté demise 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 lecompiler (compilateur : traduction en assembleur) puis l'assembler (assembleur : conversion en codemachine). ■

1.2.1.1 Unité de commande

C'est la partie commande du microprocesseur. Elle permet de séquencer le déroulement desinstructions. elle e�ectue la recherche en mémoire de l'instruction. Comme chaque instruction estcodée en binaire, l'unité de commande assure le décodage pour réaliser l'exécution puis préparerl'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 desinstructions à exécuter ;

� le séquenceur : bloc logique de commande qui organise l'exécution des instructions au rythmed'une horloge. Il élabore tous les signaux de synchronisation internes ou externes (bus decommande).

�gure 1.5: Unité de commande

6

Page 15: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.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 estcomposée de :

� une Unité Arithmétique et Logique (ALU : Arithmetic and Logical Unit) : ce circuit assureles 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 ladernière opération e�ectué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 (oVer�ow),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 lerésultat à la �n d'une opération.

�gure 1.7: Unité de traitement

7

Page 16: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 instructionUn 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 compteurde 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éeest disponible sur le bus de données.

3. l'instruction est stockée dans le registre IR.

8

Page 17: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.2. Structure : composants principaux

Phase 2 : décodage de l'instruction1. 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'instruction1. 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 microprocesseursIl 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écodeurcomplexe, 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 unetâche donnée, on exécute un petit nombre d'instructions qui nécessitent chacune un grandnombre de cycles.

� architecture RISC (Reduced Instruction Set Computer) : elle découle d'une étude statistiquequi a prouvé que 80 % des traitements des langages de haut niveau faisaient appel à seulement20 % 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 etpermet ainsi d'augmenter le nombre de registres ou d'unités de traitement (chaque instructions'exécute en un cycle d'horloge). Toutefois, cette architecture impose l'emploi d'un compilateurtrè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 pipeliningL'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 unesur-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 traitementdu microprocesseur (diminuer le nombre de cycles nécessaire à l'exécution d'une instruction). Celase fait par une optimisation du compilateur ou par le choix d'une autre architecture telle que lepipelining 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 parle 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, permettantd'améliorer l'e�cacité. Le nombre d'étapes qui caractérise les microprocesseurs pipeline estappelé étages 3.

3L'Athlon d'AMD comporte 11 étages tandis que les Pentium 2, 3 et 4 en comportent 12, 10 et 20

9

Page 18: Cours d'Informatique Industrielle

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

parallélisme : Le parallélisme, ou architecture superscalaire consiste à exécuter simultanémentsur des processeurs di�érents des instructions relatives à un même programme. Le processeurpossède plusieurs unités de traitement travaillant en parallèle. Cela se traduit par le découpaged'un programme en plusieurs processus qui seront traités par des processeurs di�érents dansle but de gagner en temps d'exécution. Cela nécessite toutefois une communication entre lesdi�é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/écritured'une donnée restent des phénomènes incompressibles. Pour éviter les temps de latence qui endécoule, on dispose d'une mémoire (appelée mémoire cache4 ou antémémoire) très rapide entre lemicroprocesseur et la mémoire. Le principe repose sur le fait que la mémoire cache conserve les motsmé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 fautnoter que la somme des espaces mémoires nécessaires dépasse presque toujours la taille physiquede la mémoire. Pour pallier cet inconvénient, on utilise de la mémoire virtuelle avec les notionsassociées de pagination, segmentation et TLB (tampon de traduction). ■

Remarque 1.3 (Processeurs spéciaux). Certains processeurs (réduits) moins performants sontdé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 processeursmatriciels qui sont basés sur l'emploi en parallèle de plusieurs processeurs. ■

1.2.2 Mémoire Principale1.2.2.1 généralitésDé�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 leuradaptabilité à de nombreuses situations. Les données peuvent être lues ou écrites. Il y a écriturelorsqu'on enregistre des informations en mémoire et lecture lorsqu'on récupère des informationsprécédemment enregistrées.

1.2.2.2 Organisation et caractéristiquesUne 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 delongueur 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 LangageC : 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 uneentrée de commande (pour sélectionner la lecture ou l'écriture) et une entrée de sélection (pour lamise 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 à e�ectuer (R/W ),4les performances de la mémoire cache dépendent du taux de succès, en général 80 à 90%.

10

Page 19: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.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 e�ectivement disponible sur le bus de données. On parle alors d'accès direct etde 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 stockagetemporaire 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 etdynamiques. La mémoire statique (SRAM) est un composant dont chaque bit est constitué d'unebascule (contenant entre 4 et 6 transistors). Dans la mémoire dynamique (DRAM), l'informationest 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énientmajeur réside dans l'obligation, pour les DRAM 5, d'un rafraîchissement périodique (pour compenserles courants de fuite du condensateur), ce qui impose une gestion plus complexe et un temps d'accèsaux informations plus long. En général les DRAM sont utilisées pour la mémoire centrale alors queles 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 desinformations de façon permanente même lorsque l'alimentation est interrompue. On utilise alors desmémoires non volatiles appelées mémoires mortes (ROM : Read Only Memory). La seule opérationpossible est une opération de lecture. ■

L'opération d'écriture (qui est possible) est appelée programmation. La méthode peut varierselon le type de ROM :ROM : elle est programmée par constructeur, son contenu est non modi�able. 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.5actuellement, 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 untemps de cycle de 15 ns (EDO), 7 ns (PC133), 5ns (DDR) et 0,66ns (QDR) soit de 2 à 45 cycles microprocesseur !

11

Page 20: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 uneRAM.

EEPROM : c'est une EPROM améliorée car elle est e�aç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, appareilphoto numérique), c'est une EEPROM particulière basée sur 2 technologies (NOR : cellulesen parallèle, bus d'adresse et de données dédiés ou NAND : cellules en série, interface d'E/Sindirecte, implantation plus dense).

1.2.2.5 HiérarchieUne 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 a�n de pouvoir travailler rapidement surces 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 performancesglobales d'un système. En e�et, 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 lesspéci�cités de chaque type de mémoire de manière à optimiser les performances. On peut donc ainsidé�nir une hiérarchie des mémoires selon la �gure suivante :

14

La figure suivante schématise cette hiérarchie des mémoires :

mémoire centrale

mémoire d'appui

bande magnétiquedisque optique

registres

cache

mémoire permanente : disque dur

coût

capacité

Figure 9

I.3.e Bus : le squelette des ordinateurs

Un bus est un moyen de communication entre les différents éléments constituant unemachine. Il s'agit en général d'un ensemble de fils électriques. Les différents éléments sont reliésau bus 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 buscirculent différents types de signaux : adresses, données, contrôle, alimentations, etc…

I.3.f Entrées/Sorties

Pour pouvoir exécuter une tâche, l'ordinateur doit disposer du programme et des données(s'il y a lieu) qui s'y réfèrent. Dès que le travail est accompli, les résultats du traitement sontcommuniqués à l'utilisateur. Les techniques d'échange d'informations entre l'ordinateur et sonenvironnement externe sont appelées techniques d'Entrées/Sorties (E/S ou I/O pourInput/Output). L'ordinateur échange des informations non seulement avec des opérateurshumains, par l'intermédiaire de terminaux de communication (consoles avec clavier, souris,imprimantes, lecteurs, etc…), mais également avec des dispositifs variés : appareils de mesures,capteurs, etc…

�gure 1.9: Hiérarchie mémoire

On utilise les mémoires de faible capacité (très rapides) pour stocker des informations fréquem-ment utiles au 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é et le temps d'accès des mémoires va augmenter.

1.2.3 Mémoires SecondairesLes besoins en capacité des mémoires augmentent considérablement (avec la taille des �chiers

par exemple). On utilise alors des mémoires secondaires souvent appelées mémoire de masse enrapport avec la taille élevée de leur capacité. il s'agit principalement des disques.

12

Page 21: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.2. Structure : composants principaux

1.2.3.1 Disques magnétiquesUn 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 latechnologie 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 plateauxtournent 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 pisteest divisée en secteurs de taille �xe (généralement 512 octets). Plusieurs paramètres caractérisentles 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 bu�ers).La structure logique est aussi spéci�que. L'organisation en piste et secteurs est appelée le for-

matage. Il s'e�ectue 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 e�ectué 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

Page 22: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 clustersdépend du volume du disque dur et du choix de la FAT (File Allocation Table). Le choix de la fatse 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 maximumtandis 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 quideviennent inutilisables. En FAT 32 le cluster ne fait plus que 4 Ko. Ainsi notre �chier de 12 Koutilise 3 clusters au lieu d'un mais il n'y aura pas de perte de capacité sur le disque dur. Cependantun �chier de plusieurs Mo est inévitablement découpé en petits morceaux. L'ordinateur enregistreces 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 devitesse de lecture due aux nombreux mouvements e�ectués par les têtes. C'est pour cela qu'il fautrégulièrement e�ectuer une opération de défragmentation qui va �recoller� côte à côte les di�érentsclusters d'un même programme de façon à accélérer sa vitesse d'accès. Il faut noter que la plupartdes 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 pouceset demi). A cause du contact entre la tête de lecture et la surface, on doit faire face à une usureprématurée. Pour limiter cette usure, on rétracte la tête à la �n de chaque opération, provoquantainsi une lenteur excessive d'accès.

14

Page 23: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.2. Structure : composants principaux

1.2.3.2 Disques optiques

Le disque optique numérique résulte du travail mené par de nombreux constructeurs depuis1970. 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 fournirun support audio et vidéo de haute qualité.

Principe du CD-ROMUn 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 rayoninfrarouge d'une longueur d'onde de 780 nm qui parcourt la piste organisée en spirale (contrairementau disque dur qui comporte plusieurs pistes). Lors de la lecture, le faisceau laser traverse la couche deplastique (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é delumière renvoyée est minime, valeur binaire 0 (resp. importante, valeur binaire 1). Pour l'écriture, legraveur, le laser utilisé est 10 fois plus puissant et brûle localement des plages (creux et bosses sontremplacées par des plages brûlées et non brûlées). Les caractéristiques principales sont la vitessemaximale de lecture, de gravage et l'interface associé (IDE, SCSI ou SATA). Il existe dorénavant desaméliorations telles que le Burn Proof ou Just Link (suspension de ravure en l'absence de donnéesdans le bu�er) et l'Overburning (dépassement léger de capacité).

Principe du DVD-ROMLe 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 e�ectuée à partird'un laser rouge (650 et 635 nm) qui permet d'obtenir des creux plus petit, donc d'augmenter laquantité 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

Page 24: Cours d'Informatique Industrielle

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

1.3 Echanges de données1.3.1 Généralités sur les communications1.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 typede données peut être de nature sonore, texte, graphique etc.. La représentation adoptée peut êtreanalogique (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 composantrécepteur, il place celuici sur la ligne de bus, le niveau de tension électrique sur cette ligne traduisantla 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éri�er que les fréquences se trouvent dans la bande passante (a�aiblissementimportant lors du transport). Les codes NRZ et RZ possèdent un inconvénient majeur : ils possèdentun 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 une�et capacitif comme le montre la �gure ci-dessous :

�gure 1.14: E�et capacitif

16

Page 25: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.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 cemode 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�érencede 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éescirculent 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),� a�aiblissement (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 a�aiblissement 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 transfertIl existe 2 unités pour quali�er 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 e�ective (aussi appelé taux d'utilisation e�ectif) 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=+5V, 11=+15 V), dans ce cas le transfert en bit/s est double de celui en bauds.

1.3.1.3 Modes de transmissionsimplex 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, êtreshumains (on ne coupe pas la parole).

17

Page 26: Cours d'Informatique Industrielle

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

full-duplex Les données circulent de manière bidirectionnelle et simultanément : la bande passanteest 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 deuxmaniè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 busparallèle peine plus di�cilement 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 ence 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 desynchronisation entre émetteur et récepteur (il faut pouvoir distinguer et reconnaître les séquencesde 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êmesignal d'horloge (pour la synchronisation). Le matériel le plus lent impose donc le rythmedes communications. On parle alors de transmission orientée message. Le temps qui séparel'envoi de 2 messages doit être un multiple de la durée d'un bit. Le message commence par unou plusieurs caractères de synchronisation puis la totalité des données. Il n'y a pas de contrôled'erreurs (overrun ou underrun). Pour exemples, les modes BSC ou HDLC (High level Data

18

Page 27: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.3. Echanges de données

Link Control). Le mode synchrone est adapté aux données volumineuses et aux nécessités detransmission rapide (le �ot de bits est réparti en trames précédées d'un motif particulier, lasynchronisation).

�gure 1.18: Transmission synchrone

asynchrone : la transmission a lieu caractère par caractère, le temps entre deux caractères (2blocs de bits) n'étant pas dé�ni. Chaque caractère est précédé d'un STARTbit et suivi d'unou deux STOPbits, ce qui signi�e 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èreest 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 communicationIl 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éri�er l'intégrité. Lorsque l'on parle

de caractères, la parité (horizontale : LRC) peut être paire (le nombre total de bits à 1, bitde parité inclus, doit être pair) ou impaire (nombre total de bit impair), ou forcée à un,ou nulle. La véri�cation 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 dedé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étectionon peut combiner les parités horizontales et verticales (�Checksum�).

CRC : Code (polynômial) de Redondance Cyclique (Cyclic Redundancy Check). Il est utilisé pourse prémunir contre les pertes d'informations ou leur altération en créant une redondancelimitée permettant de garantir la non-altération du message. On véri�e la concordance avecun polynôme générateur de degré 5 ou 16, voire 24 (5, 16 ou 24 bits).

19

Page 28: Cours d'Informatique Industrielle

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

1.3.1.5 Notion de protocoleIl 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'émetteurque du récepteur pour permettre une �bonne� communication.

1.3.2 Bus1.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, soiten tant que récepteur ou les deux. ■

Dé�nition 1.6 (PORT). Dans le cas où la ligne sert uniquement à la communication entre deuxcomposants matériels, on parle de PORT. ■

1.3.2.2 CaractéristiquesLes caractéristiques détaillées des divers bus seront décrites dans le prochain chapitre.

1.3.3 Techniques d'échange de données1.3.3.1 Echanges programmés

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

� attendre (donnée disponible),

20

Page 29: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.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éessont parvenues et doivent être traitées. Dans le cas contraire, il attend. Ce mode ralentit énor-mément les communications. En e�et, le microprocesseur est monopolisé en permanence parl'interface et se retrouve souvent en phase d'attente. Cette technique n'est utilisable que sil'attente est courte (l'attente étant active, elle empêche le processeur de faire autre chose). Elleconvient donc pour les périphériques rapides qui transférent les informations par blocs (écranou disques). Elle est à exclure dans le cas des périphériques lents (clavier, imprimante,. . . )car le taux d'utilisation e�ectif du processeur serait très faible. En e�et, dans le programmed'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 e�et.Le processeur n'attend pas la disponibilité de la donnée, il peut mettre à pro�t cette périodepour 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 untransfert, elle envoie un signal qui engendre une demande d'interruption, en agissant surla ligne interruption du processeur. Par un mécanisme de commutation de tâche, la tâcheprincipale est interrompue et le contrôle passe à la procédure d'interruption. Celleci e�ectue letransfert de la donnée et redonne le contrôle à la tâche principale. Ce transfert par interruptionse répète chaque fois que l'unité périphérique est prête. Cette technique convient au transfertde données avec des périphériques lents (imprimantes lentes, . . . ) car les intervalles de tempsentre deux transferts consécutifs sont mis à pro�t pour faire avancer la tâche principale, nonprioritaire. Cette technique est évidemment la seule utilisable dans le cas où le processeur doitré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 e�caces 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 lesmodules d'E/S. En fait, tout transfert de données doit passer par le processeur. Par conséquent, cesdeux formes d'E/S sou�rent de deux inconvénients :

1. le débit de transfert d'E/S est limité par la vitesse à laquelle le processeur teste et sert lepé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 employerune technique plus e�cace : le DMA (Direct Memory Access).

21

Page 30: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 con�er àun contrôleur qui se charge d'accéder à la mémoire à la demande des périphériques. En e�et, uncontrôleur de périphérique n'est généralement pas assez sophistiqué pour être capable de devenirmaître du bus système. Le DMA implique donc la présence d'un module supplémentaire sur le bussystème : le contrôleur DMA. Il est capable d'imiter le processeur et de s'octroyer le contrôledu bus. Un contrôleur de DMA est constitué d'un registre d'adresse, d'un registre de donnée, d'uncompteur et d'une logique de commande. Il se charge du transfert de données mais le microprocesseurdoit tout de même assurer quelques tâches :

� initialiser l'échange en donnant au contrôleur de DMA l'identi�cation 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 libred'e�ectuer un traitement quelconque. La seule contrainte est un limitation de ses propres accèsmé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ériqueest 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 descycles 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 unerafale de cycles bus contrôlés par le contrôleur DMA, sans entrelacement avec des cycles buspilotés par le processeur. Les débits peuvent être très élevés car il n'y a pas de surcoût de priseet 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érantdonc sa puissance en lui permettant de se concentrer sur d'autres tâches importantes.

22

Page 31: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.4. Système d'exploitation

1.4 Système d'exploitation1.4.1 Généralités

Un système d'exploitation correspond à la première couche logicielle d'un ordinateur (voir �gure1.1.

Il s'agit du programme qui permet d'accéder aux ressources matérielles d'un ordinateur. Lesystè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 dansWindows 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) peuperformant (architecture monolithique, écrits en assembleur, et étroitement liés au matérieldonc peu ou pas du tout portable). Son succès est surtout dû à sa capacité de lier (vérouiller) le

23

Page 32: Cours d'Informatique Industrielle

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

fonctionnement des applications Microsoft, de Windows, et l'architecture matérielle (stratégiedu 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 (presquenatif) ;

� VM, MVS, VMS, Unix, OS/2 : ce sont des SE, multiutilisateurs et multitâches. Unix (doncSolaris ou Linux) est une grande famille de SE actuellement en pleine évolution (à tempspartagé, multiutilisateur, à architecture modulaire, majoritairement écrit en langage évolué(langage C) et indépendant de l'architecture matérielle de l'ordinateur donc portable). Lesautres sont des branches mortes.

1.4.2 Les critères de choixLes 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çonsuivante :

� 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'e�cacité de l'ensemble du système, matériel et logiciel, qui permet notammentde 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 con�gurations matérielles. Les instructions

à e�ectuer par le SE sont donc de natures di�érentes. Ainsi, le SE est divisé en plusieurs couchescomme 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 BIOS1.4.3.1 GénéralitésDé�nition 1.7 (BIOS). Le BIOS (Basic Input Output System) constitue la couche basse de tousles systèmes d'exploitations sur PC. Il s'agit d'un programme stocké sur la carte mère dont une partieest 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érielprésent dans l'ordinateur et e�ectue un test nommé POST (Power On Self Test) a�n de véri�erson bon fonctionnement.

Le BIOS e�ectue (entre autres) :� un test du CPU,� une véri�cation 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

Page 33: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.4. Système d'exploitation

Chaque modèle de PC est vendu avec une version du BIOS adapté à sa con�guration matérielle(le plus fréquent est l'AMI BIOS).

La plupart des BIOS ont un SETUP (programme de con�guration) qui permet de modi�er lacon�guration basique du système. Ce type d'information est stocké dans une RAM auto-alimentéea�n 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 e�ectue une tâche bien précise, comme par exemple, a�cher 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écanismed'appel est di�érent.

En e�et, il a été prévu de pouvoir modi�er le comportement du BIOS en cours d'utilisation, parexemple pour gérer un nouveau périphérique ou pour modi�er la gestion d'un périphérique existant.

Or le code du BIOS étant en mémoire morte, il n'est pas modi�able. De plus, le BIOS étantdi�érent d'un ordinateur à l'autre, les adresses des fonctions changent.

Exemple : fonction du BIOS

soit la fonction du BIOS a�chant 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. Surle modèle d'une autre marque, cette même fonction pourrait être implantée à l'adresse F1234550 H. Comment la fonction d'a�chage 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 duBIOS. Elle est implantée à partir de l'adresse 0000 0000 H (première case mémoire) et est initialiséepar 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ède256 éléments (vecteurs) et occupe donc 1 Ko.

Dans l'exemple précédent, si l'on sait que la fonction d'a�chage du BIOS est la 33ème fonction, onva l'appeler en appelant le 33ème vecteur qui contient l'adresse de la 1ère instruction du programmegérant l'a�chage.

25

Page 34: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 soit84H.

La table des vecteurs d'interruptions contient des valeurs di�érentes pour chaque version deBIOS, et peut être modi�ée pour pointer sur du code en mémoire principale, modi�ant alors leBIOS 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 vecteursd'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 vecteursd'interruptions et les indicateurs d'état sont automatiquement sauvegardés dans la pile. L'adressede 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 lapile par INT n.

Notons que les éventuels paramètres du sous-programme d'interruption sont toujours passés parregistre.

26

Page 35: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 171.4. Système d'exploitation

1.4.3.5 Quelques fonction du BIOS

INT Fonction Caractéristiques0x00 division par 0 appelée automatiquement lors d'une division par 00x05 copie d'écran0x10 écran Gestion des modes vidéo

fonction 0x00 : initialisation mode graphiquefonction 0x01 : e�acement curseur textefonction 0x02 : positionnement du curseur

0x12 taille mémoire0x13 gestion disque dur Initialiser, lire et écrire secteurs

fonction 0x02 : lecture de données sur un disquefonction 0x05 : formatage piste

0x14 interface série0x16 clavier Lire caractère, état du clavier

fonction 0x00 : lecture carcatère au clavier0x19 reboot Lancement du système0x21 gestion DOS fonction 0x05 : imprimer caractère

fonction 0x2A : lire date systèmefonction 0x2C : lire heure systèmefonction 0x31 : laisser programme en résidentfonction 0x36 : déterminer capacité résiduelle disquefonction 0x39 : créer sous-répertoirefonction 0x3D : ouvrir un �chierfonction 0x3F : lire un �chierfonction 0x4C : terminer un programme

tableau 1.2: Quelques fonctions du BIOS

1.4.4 DOSLe 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'e�ectuer les tâches suivantes :� Gestion des �chiers et des répertoires,� Mise à jour des disques,� Con�guration 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

Page 36: Cours d'Informatique Industrielle

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

Les fonctions du DOS s'utilisent comme celles du BIOS via des vecteurs d'interruptions. Elleso�rent des fonctionnalités de plus haut niveau que le BIOS (entrées/sorties, ouverture de �chierssur disque, etc.).

Les fonctions du DOS s'appellent toutes à l'aide du vecteur 21H. La valeur du registre AHpermet d'indiquer quelle est la fonction que l'on appelle.MOV AH, numéro de fonctionINT 21H

Voici à titre d'exemple quelques fonctions du DOS accessibles par int 21H :

numéro Fonction Caractéristiques0x01 lecture caractère met le code ASCII lu dans AL0x02 a�che caractère code ASCII dans registre DL0x19 a�che string DX = adresse début string (pointeur)0x0A saisie string0x0B lecture état clavier AL=1 si caractère (0 sinon)0x25 remplissage vecteur interruption0x31 fermeture programme résident0x35 lecture vecteur interruption0x3C création �chier

tableau 1.3: Quelques fonctions du DOS

28

Page 37: Cours d'Informatique Industrielle

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 a�n 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 parfoisappelé 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'interconnexionentre deux bus.

29

Page 38: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

4.4. LES PRINCIPAUX BUS 61

– Le SouthBridge (Pont Sud ou Southern Bridge appelé également contrôleur d’entrée-sortie ou contrôleur d’extension) gère les communications avec les périphériquesd’entrée-sortie. Le pont sud est également appelé ICH (I/O Controller Hub).

On parle généralement de bridge (en français pont) pour désigner un élément d’inter-connexion entre deux bus.

Processeur

North Bridge

South Bridge

Bus PCI

Cache deniveau 2

AGP

RAM

ISA USB IDE

LAN SCSI

Bus mémoire

Bus AGP

Bus processeur

Fig. 4.3 – Organisation classique d’un ordinateur moderne

Il est intéressant de noter que, pour communiquer, deux bus ont besoin d’avoir lamême largeur. Cela explique pourquoi les barrettes de mémoire vive doivent parfois êtreappariées sur certains systèmes (par exemple sur les premiers Pentium, dont la largeur dubus processeur était de 64 bits, il était nécessaire d’installer des barrettes mémoire d’unelargeur de 32 bits par paire).

�gure 2.1: Les ponts

Dans le cas particulier ou plusieurs périphériques communiquent, il faudra gérer (avec des règles)cette communication. En plus d'avoir une architecture et une connectique particulière, il est néces-saire d'y associer un protocole d'échange. L'ensemble de ces opérations est assuré par le �contrô-leur� d'entrée/sortie.Dé�nition 2.1 (Contrôleur de Bus). Il est aussi nommé �Interface d'entrée/sortie�. Son rôleest 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 tampondes 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 aucontrôleur. Celui-ci reconstruit les données à partir de la trame (�ot de bits en série) et du protocoleadopté 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 leprocesseur 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. Chaqueprotocole possède une (ou plusieurs) méthode(s) d'arbitrage particulière qui seront vues plus endé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 à e�ectuer (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

Page 39: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.1. Caractéristiques générales

� bus (lignes) de données : liaison bidirectionnelle qui assure le transfert des informations (lectureou écriture) entre un élément et un autre,

� bus (lignes) de commandes : liaison pour assurer la synchronisation des �ux d'informationssur les bus de données et d'adresses. Les signaux de commandes que l'on peut rencontrersont 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 defabrication, des méthodes ont rapidement été mises au point a�n de faire transiter plusieursbits �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 plusutilisé est le multiplexage temporel où le multiplexeur se charge de réceptionner les di�érentescommunications à transmettre et d'attribuer à chacune de cellesci des intervalles de tempsde transmission. A l'autre bout du bus, un autre multiplexeur se charge de recomposer lesdi�é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 e�ectivement prêtes à être utilisées.

� méthode d'arbitrage : décider qui va prendre le contrôle (la main) du bus donc devenir lemaî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 recon�guration 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) (enMo/s) de la manière suivante :

TxT (Mo/s) =frquencebus × largeur

8× 10242

.

Exemple : bus PCI

Considérons le cas d'un bus PCI 32 bits à 66Mhz. En appliquant la formule précédente, onobtient un taux de transfert (maximal) théorique de :

TxT =66× 32

8.1024.1024= 253, 7 (Mo/s)

Ce débit calculé est en e�et très théorique : il faudrait, pour qu'il soit e�ectif, que le bus fonctionneen permanence et à plein régime, ce qui s'avère plutôt rare, et même physiquement impossible étant

6Cette 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 a�n de transmettre des signaux de contrôle, d'alimentation ou de synchronisation destransferts. Par conséquent, un bus parallèle de 8 bits (par exemple) sera bel et bien constitué de 8 lignes dédiées auxdonnées à transférer, mais auxquelles s'ajoutera un nombre variable de lignes dites administratives. De même, un busde type série ne sera pas réduit à une seule ligne.

31

Page 40: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

donné les inévitables temps morts engendrés par la gestion administrative du bus. Bien évidemment,ce débit quanti�e a lui seul l'e�cacité d'un bus, mais cette valeur dépend de plusieurs paramètresphysiques du bus : sa largeur, sa fréquence de fonctionnement et, de manière moins évidente, sonmode de fonctionnement. On parle également parfois de bande passante pour dé�nir le débit d'unbus, 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�),� modi�er les amplitudes des signaux électriques.� etc . . .Il existe plusieurs possibilités pour établir une classi�cation 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 connectedirectement 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 lacarte 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 donclarge, 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 passanteaussi 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 processeurIl est aussi appelé bus système. C'est le type de bus le plus rapides. En e�et, 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 internePar 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 . Endépit des apparences, le processeur n'est pas un bloc monolithique de silicium brut. Il se composeen fait de nombreuses zones fonctionnelles appelées registres, décodeurséquenceur, UAL ou autre

32

Page 41: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.2. Bus processeur

FPU (Flotting Point Unit) qui s'échangent les données en cours de traitement au fur et à mesurede leur stade d'exécution via ce bus de données interne. Comme ce bus est destiné à faire transiterles données reçues depuis l'extérieur, sa largeur correspond généralement à celle du bus de donnéesexterne, 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 dispositifparticulier 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 essentielque l'on appelle au choix bus de données ou bus frontal FSB (pour Front Side Bus). Son rôle est devéhiculer les données entre le processeur et le monde extérieur, que ce soit la mémoire vive ou lesdi�é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 processeurIntel Pentium, celleci �stagne� à 64 bits. La fréquence de fonctionnement de ce bus frontal n'a pasla même constance puisque celleci se calque très exactement sur la fréquence de fonctionnement dela carte mère, celleci ayant régulièrement augmenté au gré de ses di�érents modèles (voir tableau2.1).

Le bus de données est un bus très rapide. Si rapide d'ailleurs que, longtemps durant, aucun despé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émoirepourtant hypersollicitée). Les progrès technologiques aidant, certains périphériques (notamment lacarte graphique) et la mémoire se sont révélés de plus en plus véloces, au point que le bus processeursoit sous la menace de l'engorgement. Di�érentes solutions furent donc étudiées a�n de doper unpeu plus ses performances. Pendant très longtemps, la fréquence du FSB a été égale à la fréquencede la carte mère. A cette époque donc, chacun des cycles du signal d'horloge permettait en théorieun 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 pasvraiment 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 quali�catifde DDR (Double Data Rate) donné au procédé qui permet en conséquence de doubler le débit dubus, alors que sa fréquence réelle de fonctionnement demeure la même. La parade Intel fut baptiséearchitecture 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, AMDremplace 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

Page 42: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

Processeur (Année) Largeur FSB Fréquence (MHz)Intel 8088 (1979) 8 bits 4,77 puis 8Intel 8088 (1979) 8 bits 4,77 puis 8Intel 8086 (1978) 16 bits 4,77 puis 10Intel 286 (1981) " 6, 12 puis 20

Intel 386SX (1988) " 16 à 33Intel 386DX (1985) 32 bits 16, 33 puis 40Intel 486 (1989) " 16 à 50

Intel Pentium (1992) 64 bits 5060 puis 66AMD K5 (1996) " 5060 puis 66Cyrix 6x86 (1996) " 40 à 66 puis 75

Intel Pentium II (1997) " 66 puis 100AMD K6 (1997) " 6695 puis 100

Intel Celeron (1999) " 66 puis 100Intel Pentium III (1999) " 100 puis 133AMD Athlon (1999) " 2x100 puis 2x133AMD Duron (2000) " 2x100

Intel Pentium 4 (2000) " 4x100-4x133 puis 4x200AMD Athlon XP (2001) " 2x133 puis 2x166Intel Itanium (2001) " 2x133

AMD Athlon 64 (2003) " Hypertransport

tableau 2.1: Caractéristiques FSB

2.2.3 Bus d'adressesDans 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éponden 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 lebus de données et l'adresse où il désire l'écrire en mémoire sur le bus d'adresses. La mémoirereç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 dedonnées, mais sa largeur, elle, di�ère totalement. Bien évidemment, la tendance des processeurs estde toujours augmenter la taille de ce bus d'adresses ce qui donne lieu à une mémoire adressablepermise par les derniers modèles de puces très importante comme l'indique le tableau suivant :

34

Page 43: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.2. Bus processeur

Processeur Largeur Bus adresses Mémoire adressableIntel 8088 20 bits 1 MoIntel 8086 " "Intel 286 24 bits 16 Mo

Intel 386SX " "Intel 386DX 32 bits 4 GoIntel 486 " "

Intel Pentium " "AMD K5 " "Cyrix 6x86 " "AMD K6 " "

AMD Athlon " "AMD Duron " "

AMD Athlon XP " "Intel Pentium II 36 bits 64 GoIntel 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 ontintercalé entre la puce (chipset) et la mémoire principale un dispositif intermédiaire nommémémoirecache. Les processeurs modernes n'incluent pas un seul bloc de mémoire cache mais deux, voire mêmetrois. 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édiairedit 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épenddirectement de l'endroit où est implantée la mémoire cache. Les premiers processeurs à mémoirecache 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 cacheexterne. Dès lors, l'accès simultanée aux deux types de mémoire devenait possible (gain sensible derapidité). Ce dispositif, appelé architecture DIB (Double Independant Bus), se révéla si performantqu'il fut reconduit sur tous les processeurs ultérieurs.

35

Page 44: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

2.3 Bus d'extensionIl 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, SCSI2.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,33MHz) et de caractéristiques peu puissantes (80286 : 16 bits, 16 Mo de mémoire adressable, fréquence8 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 Goadressable, fréquence 8 MHz, taux de transfert à 33Mo/s, partage des IRQ, multi-maîtres).

2.3.1.2 MCA, VLBLes 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'o�rir un débit de 132Mo/s (nouvelle version 264 Mo/s). C'est un bus synchrone supportant un multiplexage des signauxd'adressages et de données. Les connecteurs PCI sont souvent présents sur les cartesmères au nombrede 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/EIDELe 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é misau point en 1994. Malgré l'appellation o�cielle ATA, ce standard est plus connue sous le termecommercial IDE (Interface Drive Electronics) ou EIDE (Enhanced IDE ). Il est originalement prévupour connecter des disques durs, toutefois une extension nommée ATAPI (ATA Packet Interface) aété développée a�n 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 êtredé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é cableselect (CS) permet de dé�nir automatiquement le périphérique maître et l'esclave pour peu que leBIOS de l'ordinateur supporte cette fonctionnalité.

Le protocole PIO (Programmed Input/Output) permet aux périphériques d'échanger des donnéesavec la mémoire vive à l'aide de commandes gérées directement par le processeur. Toutefois, de grostransferts de données peuvent rapidement imposer une grosse charge de travail au processeur etralentir l'ensemble du système. Il existe 5 modes PIO (Mode 0 : 3.3 Mo/s à Mode 4 : 16.7 Mo/s).

36

Page 45: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.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) ouUltra 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 (aulieu 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 estde prévenir une défaillance matérielle du disque ;

ATA 4 modi�e 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'ajusterautomatiquement la vitesse d'accès aux disques supportant cette fonction a�n d'en réduire lebruit 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 AGPLe 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. Lecontrôleur AGP a été mis au point spéci�quement pour la connexion de la carte graphique en luiouvrant un canal direct d'accès à la mémoire (DMA). Le port AGP 1X est cadencé à 66 MHz, cequi lui o�re une bande passante de 264 Mo/s. Maintenant la nouvelle norme est en AGP Pro 8Xavec une bande passante d'environ 2Go/s (66,66 MHz x 8(coef.) x 32 bits ⇒ 2,11 Go/s).

2.3.1.6 SCSILe 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 utilisantun connecteur PCI). Le nombre de périphériques pouvant être branchés dépend de la largeur dubus SCSI (7 périphériques avec un bus 8 bits, 15 avec un bus 16 bits). L'adressage des périphériquesse fait grâce à des numéros d'identi�cation. Le premier numéro est l'ID (numéro permettant dedésigner le contrôleur intégré à chaque périphérique). Un périphérique SCSI peut avoir jusqu'à 8unités logiques qui sont repérées par un identi�cateur appelé LUN (Logical Unit Number). En�n,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 doitdonner 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 ouwide : 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 pardi�érence entre les deux �ls) a�n de compenser les perturbations électromagnétiques (distancede 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 del'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

Page 46: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

intègre de nouvelles commandes (largeur 16 bits, 80 MHz DDR, chaînage de 32 périphériques, débitde 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, I2C2.3.2.1 XPCI

Le bus (PCI eXpress ou 3GIO (Third Generation I/O) a été mis au point en 2002. Contrairementau bus PCI, il fonctionne en interface série, ce qui lui permet d'obtenir une bande passante beaucoupplus é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), permettantd'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 anciensconnecteurs PCI et possèdent des tailles variables et une plus faible consommation électrique. Ilpossède le Hot Plug and Play. Les connecteurs sont reconnaissables grâce à leur petite taille et leurcouleur anthracite. Le standard PCI Express a également vocation à supplanter la technologie PCCard sous la forme de connecteurs PCI Express Mini Card. De plus, contrairement au PCI à usageinterne, le PCI Express permet la connection des périphériques externes à l'aide de câbles. Pourautant, il ne se positionne pas en concurrence des ports USB ou FireWire.

2.3.2.2 SCSI série : SSA, FC et IEEE1394Il existe aussi des interfaces SCSI séries SSA (Serial Storage Architecture), FC (Fiber Chan-

nel) et IEEE1394 qui font aussi o�ce de bus de périphériques externes. En e�et, la transmissionparallèle entraîne des restrictions en termes de longueur de câble. Les signaux de commandes, d'étatset 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-ATALe standard SATA (Serial ATA) est apparu en 2003 a�n de pallier les limitations de la norme

ATA (ou IDE) qui utilise un mode de transmission en parallèle. En e�et le mode de transmissionen parallèle n'est pas prévu pour supporter des fréquences élevées en raison des problèmes liés auxinterfé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 transmettreles données et une autre voie sert à la transmission d'accusés de réception. Sur chacune de ces voiesles données sont transmises en utilisant le mode de transmission LVDS (Low Voltage Di�erentialSignaling) consistant à transférer un signal sur un �l et son opposé sur un second �l a�n de permettreau récepteur de reconstituer le signal par di�érence. Les données de contrôle sont transmis sur lamême voie que les données en utilisant une séquence de bits particulière pour les distinguer. Ainsila communication demande deux voies de transmission, chacune e�ectuée via deux �ls, soit un totalde 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 bitsde 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 cmpour les nappes IDE). Contrairement à l'IDE, les périphériques Serial ATA sont seuls sur chaque

38

Page 47: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.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 permetle 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 traitementn'est pas critique et pour leur protocole simpli�é. Le bus SPI (comme le bus microwire) est un bussérie synchrone qui permet la connection de 8 périphériques au maximum en tolérant un débitmaximum de 2 Mbits/s. Le bus I2C est aussi un bus série synchrone qui permet la connection de40 périphériques (selon leur charge capacitive) avec un débit de 400 kBits/s. Il sera détaillé dans unchapitre ultérieur.

2.4 Bus de périphériquesLes 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 grandesdistances. Ils sont aussi appelés ports.

2.4.1 USBLe 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 plusrapide que les ports série standards. L'architecture qui a été retenue pour ce type de port est ensé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 deserreurs).

� 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 : hotPlug & 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 seulspériphériques qui en ont besoin (détection comme lent ou rapide). L'USB 1 est limité (1.5 Mbits/sen lent, 12 Mbit/s en rapide) tandis que l'USB 2 propose un débit max de 480 Mbits/s. Simplemécaniquement, il ne l'est pas du point de vue électronique et nécessite une con�guration 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 signi�e que la bande passante est partagéetemporellement entre tous les périphériques connectés. L'hôte émet un signal de début de séquencechaque 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 (unpaquet 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 sonadresse dans le jeton, il envoie un paquet de données en réponse, sinon il fait suivre le paquetaux 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

Page 48: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 2. Les Bus

un port de ce type. Il convient en réalité de ramener ce chi�re à 127 car l'adresse 0 est une adresseréservée. A raison d'une longueur de câble maximale entre deux périphériques de 5 mètres et d'unnombre 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) justi�era une étude détailléedans un prochain chapitre.

2.4.2 IEEE1394Le 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 a�n 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 leplus usité. Sony lui a également donné le nom commercial de i.Link, tandis que Texas Instrumentlui 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 1394best é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 signi�e que l'hôte envoie un paquet de données et attend de recevoir un accusé deréception du périphérique. Si l'hôte reçoit un accusé de réception, il envoie le paquet dedonné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 tempsrégulier (cadencé grâce aux deux �ls d'horloge). De cette façon aucun accusé de réception n'estné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 labande 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 identi�cateurde n÷ud codé sur 16 bits). Cet identi�cateur est scindé en deux champs : un champ de 10 bitspermettant de désigner le pont et un champ de 6 bits spéci�ant le n÷ud. Il est donc possible derelier 1023 ponts sur chacun desquels il eut y avoir 63 n÷uds. Ceci permet de relier de nombreuxpériphériques (65 535 au max !). La bande passante est plus élevée que pour l'USB, ce qui justi�eson emploi fréquent pour des applications vidéo. De plus, sa structure et son protocole d'utilisationest très bien adapté à l'utilisation en réseau (contrairement à l'USB).

L'alternative ou sa complémentarité avec le bus USB justi�era une étude détaillée dans unprochain 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 permetla 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 (transmissionssur 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éreraune interface standard série, voire une carte réseau.

40

Page 49: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 172.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 ComputerMemory Card International Association) a�n d'étendre les capacités d'accueil de périphériques desordinateurs portables. Les périphériques PCMCIA sont au format carte de crédit (54 mm × 85mm). 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'extensionde 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 embarquantdes éléments mécaniques (disques dur de grosse capacité).

Depuis 1995 la norme CardBus (parfois appelée PC Card 32bit) est apparue, permettant destransferts de données en 32 bits, cadencés à une fréquence de 33 MHz avec une tension de 3V (contre5.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) etreprésente avant tout un protocole de transmission.

Du type multi-maître, orienté messages courts avec correction d'erreurs CRC, le bus CAN estbien adapté à la scrutation de variables émises par des stations déportées. La norme ISO 11898spéci�e un débit maximum de 1Mbit/s. La longueur maximum du bus est déterminée par la chargecapacitive et le débit (1 Mbit/s 40 m, 500 Kbit/s 100 m et 20 Kbit/s 1 km). Le protocole est basé surle principe de di�usion générale (le contenu de chaque message possède une identi�cation reçu defaçon univoque par tous les abonnés) et l'identi�cateur indique la priorité du message qui déterminel'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 unegrande �exibilité de con�guration (possibilité d'ajouter des stations sans modi�er la con�gurationdes autres stations).

41

Page 50: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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.115Bus CAN 0.125

I2C 0.425IEEE488 (selon distance) < 1

USB 1 1.5Port Parallèle ECP/EPP 3

SCSI 1 5IDE 8.3

SCSI 2 (Wide) 10EIDE 16.6

SCSI 2 (Fast Wide 40) 40IEEE-1394a 50

USB 2 60CardBus 127

Ultra DMA 6 133SATA 150PCI 264

IEEE 1394b (�bre optique) 100 (400)SATA II 600

SCSI 3 (Ultra 640 QDR) 640AGP Pro 8x 2110

XPCI 8000

tableau 2.3: Récapitulatif des performances des principaux Bus

42

Page 51: Cours d'Informatique Industrielle

Chapitre 3

Interruptions

Sommaire

3.1 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2 Système d'interruptions hiérarchisées . . . . . . . . . . . . . . . . . . . . 453.3 Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4 Mécanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.5 Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.6 Gestion des Entrées-Sorties par interruption . . . . . . . . . . . . . . . . 543.7 Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.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'uneroutine ). Une fois la tâche e�ectuée, il reprend le cours normal de ses opérations à l' endroit où ilavait é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 UART16550 (situé dans un ASIC sur la carte mère), ou bien le clavier est controlé par un microcontrolleurde type 8042. Puisque chaque périphérique (ici interne) travaille individuellement, il est nécessairede 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

Page 52: Cours d'Informatique Industrielle

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

�gure 3.1: Scrutation

Cette méthode est (évidemment) coûteuse en temps et possède pour inconvénient majeur demonopoliser 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 logicielleL'attitude préférable consiste à donner la responsabilité à chaque composant d'avertir (on dit

noti�er) le microprocesseur en attirant son attention sur la tâche à e�ectuer en priorité. Il s'agit dumécanisme (asynchrone) d'interruption. Le périphérique envoie un signal électrique via une pattespéci�que du PIC (Program Interrupt Controller : 8259) qui agit ici comme un intermédiaire entrele périphérique et le microprocesseur. Dans le cas où le PIC alerte le microprocesseur, ce dernierstoppe son activité courante et �saute� (on dit qu'il se déroute) vers une fonction spéci�que à executer(�Interrupt Handler� : traitant d'interruption) qui a été associée au préalable au périphérique (plusprécisément, associée au vecteur d'interruption du périphérique). Ce type d'interruption est appeléeInterruption 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 e�et, elles sont générées par le microprocesseur lorsqu'il rencontreune 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 sontgé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 (over�ow, erreur d'adressage,code opération inexistant, problème de parité . . . ) ;

� les interruptions (software) dites logicielles : permet à un processus utilisateur de faire unappel au système. Elles sont produites par l'instruction �INT n� où "n" est le type de l'inter-ruption.

� les interruptions (hardware) externes ditesmaté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

Page 53: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.2. Système d'interruptions hiérarchisées

3.2 Système d'interruptions hiérarchiséesA 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'urgenced'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'adresseau processeur.

Remarque 3.1 (NMI). Certaines interruptions présentent tellement d'importance qu'il ne doitpas être possible d'interrompre leur traitement. On masquera alors les autres interruptions pourempê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 priseen compte dès qu'elle est démasquée. Au contraire, une interruption peutêtre désarmée : elle seraignoré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 dedonnées) que l'on trouve les systèmes d'interruptions les plus élaborés. Dans certains cas chaqueniveau est découpé en sous-niveaux de priorités di�érentes. Un bon système doit permettre auprogrammeur 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éci�que à 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émorisezmentalement où reprendre votre lecture, puis vous vous interrompez pour lui répondre. Vousauriez 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 poserune autre question. S'il s'agit d'un autre camarade vous le laisserez patienter quelques minutesle temps de terminer avec la première demande de renseignement. S'il s'agit de votre professeurvous 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'interruptionprécédente.

3.3 Causes d'interruptionIl y a deux grandes catégories d'interruptions : les interruptions externes et les interruptions

internes.

45

Page 54: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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. Dansle 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 ausystè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, parexemple, d'activer certains services du système qui nécessitent de béné�cier de privilèges réservésau système. C'est une interruption externe et logicielle.

Les interruptions internes produites par le processeur, sur des erreurs par exemple (division parzéro, dépassement de capacité, erreur d'adressage, accès à une zone de mémoire protégée, etc.). Cesinterruptions 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 programmerl'horloge pour que celle-ci génère une interruption toutes les 10 ms. A chacune de ces interruptionsle système peut reprendre la main et exécuter un algorithme de choix de tâches (ordonnanceur) demaniè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'interruption3.4.1 Identi�cation 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'étatde ce bit. S'il est à 1 le CPU est informé d'une demande d'interruption. Pour pouvoir la traiter ildoit en déterminer l'origine.

Il existe deux méthodes principales pour identi�er la source d'une interruption : la scrutation(polling) et l'identi�cation directe. Le choix entre ces deux méthodes est généralement le résultatd'un compromis coût/performance selon en particulier le nombre potentiel de périphériques quipeuvent être connectés.

Etudions quelques mécanismes d'identi�cation 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'interruptionsont réunies par une porte OU et chacune des lignes correspond à un périphérique. Lorsquele bit d'interruption est trouvé à 1 par le CPU, une routine de service est activée. Celle-civa tester l'état de la ligne de chacun des périphériques pour identi�er le demandeur, puisexé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 identi�er l'origine de la demande.

� Il peut aussi n'exister qu'une seule ligne d'interruption que chaque périphérique demandeurmaintient dans un état haut. L'unité centrale (le microprocesseur) est alors obligée d'interrogerchacun des périphériques présents sur le bus pour lui demander s'il requiert un service. Lapriorité est ici dé�nie par l'ordre dans lequel les lignes sont testées. En général dans ce modede fonctionnement une interruption n'est elle-même pas interruptible car le mécanisme descrutation est assez long.

� Une autre méthode (IRQ : InterruptReQuest) consiste en un code envoyé par le périphérique.Ce code est utilisé pour exécuter une routine de service spéci�que au périphérique. Ce code

46

Page 55: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.4. Mécanisme d'interruption

peut être par exemple un pointeur dans une table contenant le vecteur d'interruption de chaqueroutine de service. Un vecteur d'interruption contient l'adresse de début de la procédurede traitement de l'interruption et le registre d'état du processeur nécessaire au début dutraitement. Celui-ci, qui peut contenir certains niveaux de privilèges nécessaires au traitementde la requête, remplace le registre d'état courant, après que ce dernier ait été sauvegardé dansla pile avec le reste du contexte du programme interrompu. Le traitement de l'interruption,qui débute à la première instruction spéci�que à l'interruption, est donc plus rapide. Dansce schéma une routine de service peut elle-même être interrompue. La technique précédentenécessite un mécanisme pour empêcher deux périphériques d'écrire leur code simultanémentsur le bus. Il est également possible de chaîner les périphériques. La priorité est alors dé�niepar la position du périphérique sur la ligne d'interruption : câblage en daisy-chain.

3.4.2 Vecteur d'interruptionLorsqu'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 dedonnées un code numérique indiquant la nature de l'interruption. Le microprocesseur utilise ce codepour 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 adressesdes sous-programmes d'interruptions sont gérés de cette manière, on dit que les interruptions sontvectorisées. Avantage de la vectorisation des interruptions : l'emplacement d'une routine (ISR) peutêtre n'importe où dans la mémoire, il su�t de spéci�er 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 lamémoire centrale. Chaque vecteur d'interruption est constitué de 4 octets représentant une adresselogique du type �CS : IP� :

�gure 3.3: Table des vecteurs d'interruptions

47

Page 56: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 quatresoctets sont chargés dans les registres �CS :IP�. Chaque élément contient l'adresse de début d'unprogramme d'interruption sur 4 octets (o�set 2 octets, segment 2 octets). La taille de la table estdonc de 4 x 256 = 1 Ko. Elle occupe les adresses 0h à 3FFh en mémoire centrale. Le tableau 3.1donne le détails des interruptions.

INT (numéro) Nature de l'IT Utilisation usuelle00 - 01 Exception

02 NMI Erreur de parité en mémoire03 - 07 Exception

08 IRQ 0 Horloge interne (System Timer)09 IRQ 1 Gestion Clavier0A IRQ 2 Redirection PIC 20B IRQ 3 Port série COM2 / COM40C IRQ 4 Port série COM1 / COM30D IRQ 5 Carte Son0E IRQ 6 Lecteur Disquettes0F IRQ 7 Port Parallèle

10 - 6F IT Logicielles70 IRQ 8 Horloge Temps Réel (CMOS)71 IRQ 9 Redirection IRQ272 IRQ 10 Disponible73 IRQ 11 Disponible74 IRQ 12 Souris PS/275 IRQ 13 Co-processeur Arithmétique76 IRQ 14 IDE 177 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 à entreprendreLorsqu'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 êtrecâ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 ducontexte peut être réalisée par la routine de service elle-même ou prise en charge automatiquementpar l'unité centrale de traitement. En fonction du code identi�ant le périphérique responsable del'interruption, l'adresse de la routine de service associée est chargée dans le compteur ordinal, cequi 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 chargedu branchement vers la routine d'interruption, de la sauvegarde du contexte et la modi�cation ducompteur ordinal. Il o�re une grande souplesse car il est possible d'écrire une grande variété deroutines de service. Il peut cependant être pénalisant pour un processeur avec pipe-line et un grand

48

Page 57: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.5. Le PIC 8259

nombre de registres. Dans certaines architectures, en particulier celles orientées vers les applicationstemps réel, un processeur supplémentaire peut être associé au processeur principal avec pour tâchede gérer les opérations d'entrées/sorties et de �ltrer les interruptions.

3.4.4 Reprise du programme interrompuLe 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 serviceil faut également démasquer les niveaux masqués à son appel. L'interruption est ainsi totalementtransparente. La remise à jour du compteur ordinal provoque le retour au programme à l'instructionsuspendue.

3.4.5 Le partage des interruptionsComme le montre l'IVT, les IRQ sont en nombre limitées. Ceci a longtemps été la cause de

con�its 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 quepour pouvoir partager une interruption, il faut bien sûr pouvoir gérer une connexion de plusieurslignes 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êmeinterruption si elles acceptent le partage d'IRQ. Seule la �exibilité qu'o�re 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 commepartageables.

En e�et, toutes les autres IRQ sont utilisées par des composants �legacy�, et ce en considérantque 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 IRQsde 3 à 7, à partir du moment où aucun composant �legacy� n'est connecté dessus. Par exemple, sivous n'utilisez aucun de vos ports série, vous pouvez alors, depuis le SETUP de certains BIOS, lesdéclarer comme inactifs. Ceci correspondra à une réelle déconnexion physique des ports qui serontalors 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 BIOSconstruit une table appelée �PCI IRQ routing table�. Cette table contient les entrées de chaquepé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 physiquesd'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é à chaquefois qu'une communication s'établit avec un périphérique, et bien que des périphériques puissentpartager une même IRQ, ils auront tous un unique Link Value : il n'y a donc pas d'erreur possible !

3.5 Le PIC 8259Le 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

Page 58: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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

Page 59: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.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é auxadresses 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 (INTerruptAcknowledgement)qui signi�e 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

Page 60: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 e�ectuer ;� 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 : InitializationControlWord). Ces registres sont initialisés

au démarrage par le BIOS.� de 3 registres de contrôle (OCW : Operation CommandWord) 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éci�que : annule le bit de l'ISR de plus forte priorité,2. Spéci�que : annule un bit de l'ISR, ce bit devra être spéci�que,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 : adresse0x21 et PIC2 : adresse 0xA1) pour signi�er quelles vont être les IRQ masquables ou non en utilisantles tableaux ?? et ??.

52

Page 61: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.5. Le PIC 8259

Bit Disable IRQ Fonction0 IRQ 0 Horloge interne1 IRQ 1 Gestion Clavier2 IRQ 2 PIC 23 IRQ 3 Port série COM24 IRQ 4 Port série COM15 IRQ 5 Carte Son6 IRQ 6 Lecteur Disquettes7 IRQ 7 Port Parallèle

Bit Disable IRQ Fonction0 IRQ 8 Horloge Temps Réel (CMOS)1 IRQ 9 Redirection IRQ22 IRQ 10 Disponible3 IRQ 11 disponible4 IRQ 12 Souris PS/25 IRQ 13 Co-processeur Arithmétique6 IRQ 14 IDE 17 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 duPIC 2 (du fait de la redirection). ■

Pour masquer une IRQ, il faut la mettre à la valeur 1. Exemple : écrire 0xF7 dans OCW1 autorisel'IRQ 3 et masque toutes les autres. En pratique, il faut préalablement lire le contenu du registrede masquage, puis forcer le bit associé au périphérique à contrôler sans modi�er les autres bits.Ceci est réalisé par la fonction outp(0x21,(inp(0x21) & 0xF7) ; . Une fois la routine terminée il fautrétablir l'état préalable des IRQ. Ceci est assuré par la fonction outp(0x21,(inp(0x21) | 0x08) ; . Ala �n de la routine (ISR), il ne faut pas oublier l'instruction EOI (End Of Interrupt) par le biaisde 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

Page 62: Cours d'Informatique Industrielle

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

3.6 Gestion des Entrées-Sorties par interruptionChaque 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êtesdu microprocesseur et les transforme en commandes spéci�ques au périphérique, et réciproquement.Ce mécanisme permet une grande souplesse et ne nécessite pas d'instructions spécialisées à chaquetype possible de périphérique. L'unité centrale de traitement communique avec un périphériqueuniquement en mode lecture ou écriture comme pour la mémoire. Les données proprement ditessont accompagnées de commandes (actions à réaliser) et d'informations (état du périphérique). Lecontrôleur de périphérique est chargé d'interpréter les requêtes ainsi transmises par le processeur etil 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 signald'interruption. Par rapport au dialogue on classe souvent les périphériques en deux catégories (parcaractères : communication par l'intermédiaire de registres et par blocs : information accessible parblocs disposant chacun d'une adresse). Selon les architectures les adresses des registres ou des blocspeuvent faire partie de la mémoire principale ou correspondre à des zones distinctes à cette mémoirecentrale. Ces adresses peuvent être attribuées lors de la mise en place du matériel ou con�guréesdynamiquement.

Lorsque les quantités de données à échanger sont importantes, il est pénalisant de charger leprocesseur de gérer ces échanges. Il est alors préférable de permettre une communication directeentre 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 pourlequel, 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èresou par blocs en commandes spéci�ques au périphérique, avec par exemple la gestion des signauxde contrôle de la liaison, des contraintes de temps à respecter, etc. Ces pilotes sont fournis avec lematériel.

3.7 Interruptions Logicielles3.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é. Cetteinterruption (après avoir lancé le programme correspondant), appele l'interruption 0x1C. Cettedernière ne contient qu'un retour IRET a�n de permettre aux programmeurs d'implanter leurspropres 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 11fournit 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

Page 63: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.7. Interruptions Logicielles

� IT 0x1A : gestion de la date et de l'heureLes 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éesL'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'e�ectuer en appelant

l'interruption numéro 0x14. On peut ainsi utiliser les fonctions de base résidentes correspondantesdu 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 del'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 propredu 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, c�ag, �ags ;

} ;

3.7.2 Interruptions DOSLes 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

Page 64: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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'estpas libéré par le système d'exploitation. Un programme résidant s'écrit comme un autre programme,il su�t 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 particulierplusieurs 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 appellele 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 e�ectue 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

Page 65: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 173.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 Cqui sont particulièrement destiné à cet usage.

3.8.1 Fonctions liées aux interruptionsLa 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 e�ectuer 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 fonctionintdosx(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 * bu�er) appelela 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 ducode pour sauver les registres en début d'exécution et pour terminer la routine avec l'instruction

57

Page 66: Cours d'Informatique Industrielle

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

IRET signalant le retour d'une interruption. La routine de service doit éviter un appel aux routinessystè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 modi�e le contenu d'un vecteur et �getvect( )� qui lit la valeur d'un vecteur. Ondispose aussi de 2 macros �disable( )� qui met en attente de traitement tous les signaux d'interruptionet �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 deservice de l'IT num. Pour éviter cette opération, il faut éviter d'être interrompu. Il faut donc fairepré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

Page 67: Cours d'Informatique Industrielle

Chapitre 4

Port Parallèle

Sommaire4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.1 IntroductionUn 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 (parrapport au port série) qui est traditionnellement utilisée pour les imprimantes. Le seul problèmeposé par le port parallèle est qu'il ne peut guère être utilisé avec des câbles longs sans ampli�er lesignal, au risque de provoquer des erreurs de données. En e�et, la longueur o�cielle 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). LePort parallèle a subi plusieurs évolutions :

Port parallèle standard (SPP) : les premiers PC n'étaient pas équipés de di�érents types deports 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 unidirectionneldu port parallèle du PC original était justi�é par son rôle premier, qui était d'envoyer desinformations à l'imprimante. Il travaillait en mode �nibble� (envoi de 4 bits à la fois). Par unprocédé astucieux, ce port était cependant capable d'e�ectuer des connexions de sortie de 8bits et des connexions d'entrée de 4 bits. Les ports parallèles standard sont capables d'e�ec-tuer des connexions à un taux de transfert e�ectif d'environ 150 Ko/s en sortie et 50 Ko/s enentrée.

Port parallèle bidirectionnel (BPP) : en 1987, IBM lança le port parallèle complètement 8bits (en sortie comme en entrée) donc un taux de transfert d'environ 150 Ko/s en entrée eten sortie.

Port parallèle amélioré (EPP) : le port EPP (Enhanced Parallel Port) correspond à une nou-velle spéci�cation et est parfois appelé �port parallèle mode rapide�. Paru en 1991, ce type deport fonctionne quasiment à la vitesse d'un bus ISA. Ce port permet d'atteindre un débit de2Mo/s.

59

Page 68: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 portparallèle standard et requiert un circuit logique spécial. Le port ECP très performant requiertcependant un canal DMA ce qui peut provoquer des con�its avec d'autres périphériques quiutiliserait un canal DMA. Les nouveaux ordinateurs sont généralement fournis avec des portsECP permettant d'e�ectuer des communications à haut débit. La plupart du temps, les portsECP peuvent être convertis en port EPP ou en port parallèle standards par l'intermédiaire duBIOS (au setup). Il est seulement préférable de placer ce port en mode EPP pour béné�cierd'un débit maximal.

4.1.1 Principales CaractéristiquesEn résumé

SPP EPP ECPunidirectionnel bidirectionnel bidirectionnel

simplex half-duplex half-duplexNo control Software control Hardware controltrè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 tousles transferts vers et depuis le périphérique tandis que ECP nécessite que le périphérique négocie lemode reverse et contrôle le protocole (utilisation d'un controlleur dédié à l'utilisation du port ECP).

4.1.2 Norme IEEE 1284Le 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 portparallè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 portparallèle multi-mode fonctionnant en mode 4 bits, 8 bits, EPP et ECP. Tous les types de modes nesont 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éseauxlocaux, etc.).

C'est un standard de niveau matériel exclusivement et il ne précise donc pas comment le logicieldoit communiquer avec le port, mais il a donné lieu à un standard supplémentaire destiné à dé�nirune interface de niveau logiciel. Ainsi la commission IEEE 1284.3 a-t-elle été formée pour élaborer unstandard 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�érentsfabricants, comporte une spéci�cation destinée à faire contrôler le fonctionnement du mode EPPpar le BIOS du PC.

60

Page 69: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 174.1. Introduction

4.1.3 Signaux

�gure 4.1: Connecteur DB25 pour SPP

SPP EPP ECP1 STRB R/W Host CLK2-9 D0-D7 D0-D7 D0-d710 ACK INT Periph CLK11 BUSY WAIT Periph ACK12 PAPER OUT Reverse ACK13 SELECT X FLAG14 AUTO FEED DATA STRB Host ACK15 ERROR Periph Request16 INIT/RESET RESET Reverse Request17 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ésentessur 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 lecaractère transmis et que ce dernier peut continuer la transmission.

� BUSY : cette ligne est mise à 0 par l'imprimante lorsque son bu�er de réception est plein.L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de données. Il doit attendre quecette ligne revienne à 1 pour recommencer à émettre.

� PAPER OUT : l'imprimante indique par cette ligne à l'ordinateur que l'alimentation en papiera é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 e�ectuer un saut de ligne à

chaque caractère �return� reçu. En e�et, certaines imprimantes se contentent d'e�ectuer unsimple 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 e�ectuer 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

Page 70: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 4. Port Parallèle

4.1.4 ProtocoleVoici 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 fonctionnement4.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 con�guré comme entrée, le registre de donnéesconserve 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 lectureseule, sauf pour le signal S0 qui est un repère de �n de séquence ( timeout �ag) pour les portsacceptant des transferts en mode EPP et qui peut être annulé par logiciel.

62

Page 71: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 174.2. Modes de fonctionnement

� registre de commande : il garde l'état de quatre bits (C0 à C3) qui sont habituellement utiliséscomme sorties.

L'adresse de base pour le port LPT1 est habituellement 0x378 (0x278 pour LPT2)

O�set Reg. R/W bit fonc.Base+0 Données W 7 D7

6 D65 D54 D43 D32 D21 D10 D0

O�set Reg. R/W bit fonc.Base+1 Etat R 7 busy

6 ack5 paper out4 select in3 error2 IRQ1 reservé0 reservé

O�set Reg. R/W bit fonc.Base+2 Commande R/W 7 inutilisé

6 inutilisé5 bidirectionnel4 IRQ via Ack3 selec printer2 reset printer1 auto linefeed0 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 e�ectue la totalité du �Handshaking� a votre place. La seulechose qui incombe au programmeur est d'écrire l'octet de données sur le port. Ce mode permetdes transferts rapides d'octets dans les deux directions. Les signaux de protocole d'accord font ladistinction entre transfert de données et d'adresse. Il possède des registres supplémentaires (voirtableau ??).

63

Page 72: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 despetits blocs de données avec de fréquents changements de direction, tels que lecteurs de disquesexternes 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 dedonnées (�gure ??), chacune ayant un protocole d'accord di�érent. Les transferts EPP di�èrent dumode SPP par le fait que les circuits du port génèrent automatiquement des signaux de contrôle etdétectent les réponses venant de l'autre extrémité. Il n'est donc pas nécessaire d'instructions par unlogiciel pour charger l'état du signal de sortie Strobe ou pour lire une entrée occupée. Les opérationsde 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), lectureset écritures de données utilisent nDStrobe (C1) : ceci est un moyen simple pour que le récepteurfasse 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

Page 73: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 174.2. Modes de fonctionnement

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

4.2.3 Mode étendu ECPCe 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 comporteun tampon FIFO de 16 octets pour garder les données à envoyer et les données reçues. Pour lestransferts les plus rapides, le port ECP peut compresser les données pour conditionner l'informationen moins d'octets. L'accès direct à la mémoire (DMA) permet à l'unité centrale de faire d'autresactions pendant que les données sont transmises entre le tampon et la mémoire. En plus d'êtrerapide, les transferts en mode ECP sont �exibles : ils peuvent s'accommoder à des périphériquesplus lents, parce que le protocole d'accord n'a pas de timeout automatique. Les signaux de protocoled'accord font la distinction entre données et signaux de contrôle. Un octet de contrôle peut contenirune adresse ou une information de compression de données. Du côté de l'hôte, le port ECP contientun 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 lamême séquence sur les sorties Données du port. Dans le sens opposé, les tampons stockent une séried'octets reçus et la CPU lit chaque octet avant que le suivant n'arrive. Si le PC envoie des donnéesvers un périphérique lent, le PC peut écrire jusqu'à 16 octets dans le tampon FIFO et faire d'autreschoses ensuite. Le port ECP transférera les données automatiquement lorsque le périphérique seraprêt. De même, si un périphérique rapide veut envoyer des données vers un PC, le tampon FIFOdu PC en stocke jusqu'à 16 octets de données reçus, que le PC pourra lire à son gré.

65

Page 74: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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. Enstandard, le PC est équipé d'un seul port parallèle, mais il serait tout à fait possible d'en rajouterun second. Dans la plupart des BIOS, une interruption est d'ailleurs réservée d'o�ce à cet e�et,que le port soit présent ou non. Dans de nombreux cas, le second port est désactivé et l'IRQ 5 estréutilisée pour un autre composant.

66

Page 75: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 174.3. Programmation

4.3.2 Tableau des registres pour tous les modesAdresse Type de Port Fonctionbase SPP (W), EPP (W), ECP (mode 0 et 1) données

ECP (mode 3) Adresse FIFObase+1 SPP, EPP, ECP étatbase+2 SPP, EPP, ECP commandebase+3 EPP adressebase+4 EPP (R/W) donnéesbase+5 EPP autre fonctionbase+6 EPP autre fonctionbase+7 EPP autre fonctionbase+0x400 ECP (mode2 et 3) données FIFO

ECP (mode 6) test FIFOECP (mode 7) Con�g reg. A

base+0x401 ECP (mode 7) Con�g reg. Bbase+0x402 ECP (tous modes) ECR (Extended Control Register)

67

Page 76: Cours d'Informatique Industrielle

Chapitre 5

Port Série

Sommaire

5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.2 Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.3 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.1 GénéralitésLa 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 transporterl'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 nombrede périphériques. Contrairement à la liaison parallèle, elle autorise de grandes distances mais possèdedes réglages plus compliqués. Ceci justi�e une étude détaillée.

5.1.1 Format et Principe

Schéma de principe :

68

Page 77: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 175.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 bienpré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: E�cacité d'une communication série RS232

Le format d'une trame est le suivant :

attente START DONNEES PARITE (facultatif) STOP1 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�érentsparamètres variables de cette trame soient connus aussi bien de l'émetteur que du récepteur. Il estalors 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'horloged'échantillonnage des bits à la réception est assurée à l'aide du bit de Start. Sur une liaison série aurepos, on doit observer un 1 logique (voir schéma ci dessous) :

69

Page 78: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 leLSB suivis d'un bit de parité (facultatif) et d'un (ou plusieurs) bit de Stop qui indique au récepteurla �n de transmission de la donnée. La transmission d'un caractère se termine toujours de cettefaç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 etimpaire :

� parité paire : mettre le bit de parité à 1 ou 0 pour assurer un nombre total (y compris le bitde parité) pair de bit à 1 ;

� parité impaire : mettre le bit de parité à 1 ou 0 pour assurer un nombre total (y compris lebit 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

Page 79: Cours d'Informatique Industrielle

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

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

5.1.2 Norme RS 232La 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 interfacessé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 desA-Op).

�gure 5.8: Relation entre niveau logique et tension

5.1.3 Brochage du port série standardLe 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

Page 80: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 Sens1 8 DCD détection de porteuse (Data Carrier Detect) ⇐ E12 3 RxD réception des données (Received Data) ⇐ E3 2 TxD émission des données (Transmitted Data) ⇒ S4 20 DTR terminal prêt (Data Terminal Ready) ⇒ S15 7 SG masse (Signal Ground)6 6 DSR données prêtes (Data Set Ready) ⇐ E17 4 RTS demande d'émission (Request To Send) ⇒ S18 5 CTS prêt pour l'émission (Clear To Send) ⇐ E19 22 RI indicateur de sonnerie (modem) (Ring Indicator) ⇒ E1

tableau 5.2: Brochage du port série

E et S signi�ent entrée et sortie tandis que E1 précise une entrée active au niveau haut (niveaulogique 1) et S1 une sortie active au niveau haut .

�gure 5.9: Signaux sur les connecteurs DB25 et DB9

5.1.4 Description des signauxLes é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

Page 81: Cours d'Informatique Industrielle

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

- RTS est une ligne de demande d'émission. La ligne est positionnée à l'état haut lorsque leterminal veut envoyer des données. (DTE → DCE)

- CTS est une ligne d'invitation à émettre. Elle passe au niveau haut lorsque le DTE attend desdonnées du DCE. Il signale qu'il peut recevoir les données du DCE et qu'il peut donc les luienvoyer.

• 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 à unmodem 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 su�sent : l'un pour transporter les données, l'autrecomme référence (la masse en général),

� dans les deux sens (bidirectionnel) : les dispositifs DCE et DTE doivent pouvoir émettre etrecevoir des données. On parle de liaison duplex (voir �gure ci-dessous). Si la communicationest alternée : half-duplex, simultanée : full-duplex.

�gure 5.11: Connections pour liaisons simplex et duplex

73

Page 82: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 5. Port Série

5.2 ProtocolesLorsqu'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 "). Lessignaux correspondants permettent de surveiller l'état d'un autre et de répondre en conséquence. Ilsindiquent 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 protocoled'é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éspeuvent ê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-DCEAux 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

Page 83: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 175.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 tempsdé�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 quel'une ou l'autre des lignes DSR, CTS et/ou CD. Un DCE pourra ne scruter que DTR ou RTS et necommander 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 pourles données qui circulent dans un sens, un pour les données qui circulent dans l'autre sens et unpour 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 e�et, B doit attendre de recevoir la donnée en 2 avant depouvoir émettre sur A en 3.

Si on veut initier une liaison full-duplex, l'émission de l'un doit correspondre à la réception del'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

Page 84: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 5. Port Série

Attention, personne ne véri�e si son correspondant est prêt à émettre, prêt à recevoir ou toutsimplement sous tension !

5.2.2.1 Null modem

Ici, le but est de s'a�ranchir 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 ordinateurB (émulation). La ligne DTR est rebouclée sur DSR et DCD. Ainsi, lorsque DTR est mis à 1, leDSR 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 ordinateurscommuniquent à 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ériel5.2.3.1 Liaison complète

D'autres signaux ont été ajoutés à ces trois lignes de base a�n de permettre un contrôle dudéroulement de la liaison par l'un ou l'autre des équipements et éviter par exemple qu'un équipementenvoie 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 oul'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

Page 85: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 175.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 etDTR de l'autre. ■

Problème de régulation de �ux de données : il serait extraordinaire que l'émetteur envoie desdonné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 ceproblè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 a�n 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 ladonné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 pourdemander au récepteur s'il est prêt à accepter ces données. Le récepteur, lorsqu'il est prêt à recevoirles 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. Lerécepteur le constate en la surveillant par son entrée DSR.

77

Page 86: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 5. Port Série

�gure 5.19: Exemple de trame en protocole RTS CTS

Résumé :

P. Hoppenot (novembre 2002) Informatique industrielleDescription d'une liaison

Phase 1 : Connexion de ligne sur les systèmes A et B. Les signaux DTR et DSR peuvent êtrevalidé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 porteusesur la ligne.

Phase 3 : Détection de porteuse par l'ETCD B (DCD=0).Phase 4 : Transmission de données.Phase 5 : Arrêt de l'émission par A (RTS=1 et CTS=1).Phase 6 : Déconnexion de la ligne sur A et B (DTR=1 et DSR=1).

RTS

TD

DTRDonnées

DSR

CTS

RD

DTRDonnées

DSR

DCD

E

TDA

E

CDA

E

CDB

E

TDB 1 2 3 4 5 6

Figure 7 : Etablissement de la liaison entre deux systèmes avec la norme V24.

IV.3. Câblages

103 : TD

109 : DCD

108 : DTR107 : DSR106 : CTS

105 : RTS104 : RD

102 : SG

ETTD

103 : TD

109 : DCD

108 : DTR107 : DSR106 : CTS

105 : RTS104 : RD

102 : SG

ETCD

Emission de données

Réception de données

Demande d'émissionPrêt à émettre

ETCD prêt

ETTD prêtDétection porteuseMasse signal

Figure 8 : Liaison normalisée ETTD-ETCD dans la norme V24.

La norme V24 ne donne qu'un câblage entre un ETTD et un ETCD (Figure 8). On peut être amené àconnecter deux ETTD directement entre eux. C'est le cas quand on relie deux PC par l'intermédiaire

�gure 5.20: Di�érentes phases d'une communication entre 2 DTE (A et B)

1. Connexion de ligne sur les systèmes A et B. Les signaux DTR et DSR peuvent être validéssuite à une procédure de réponse automatique transmise par le circuit RI.

2. Validation de l'émission sur A (RTS = 1 et CTS = 1). Le DCE A émet une porteuse sur laligne.

3. Détection de porteuse par le DCE B (DCD = 1).4. Transmission de données5. Arrêt de l'émission par A (RTS = 0 et CTS = 0)6. Déconnections de la ligne sur A et B (DTR = 0 et DSR = 0)

78

Page 87: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 175.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écepteurrépond par le caractère ASCII ACK (0x06, reçu) si la transmission s'est correctement déroulée oupar 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 etle récepteur pour échanger des données se fait par logiciel. Dans le cas où des caractères particulierssont chargés de contrôler le �ux (la vitesse) des échanges de données, on parlera de handshakinglogiciel , 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,codeASCII 0x13) : Le récepteur gère un bu�er. Les données sont traités par blocs de longueur variable.Lorsque son bu�er est plein à 80 %, le récepteur envoie le caractère �XOFF�. L'émetteur lorsqu'ilreçoit le caractère XOFF doit immédiatement suspendre son émission. Lorsque le récepteur a vidéson bu�er à 50%, il envoie un caractère �XON� à l'émetteur. A la réception de XON l'émetteur peutreprendre 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 peutreprendre de sa propre initiative le transfert. Si le récepteur n'est pas d'accord, ce dernier pourratoujours ré-émettre un XOFF.

79

Page 88: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 oulogicielle, il su�t 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 etDTR tandis qu'un DCE délivre une tension non nulle sur les signaux RD (mesurer 3-7), CTS, DSRet DCD. DTE-DCE : connections sur DB25

80

Page 89: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 175.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 bu�ers

81

Page 90: Cours d'Informatique Industrielle

Chapitre 6

UART

Sommaire6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.2 Con�guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.3 Les Registres de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.4 Programmer l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.5 Annexe : architecture interne d'un UART 16550 . . . . . . . . . . . . . 95

6.1 IntroductionAprè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ésL'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 lechargement / déchargement des registres internes.

�gure 6.1: UART : architecture interne

82

Page 91: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.2. Con�guration

La RS232 est l'interface standard, le modem réalise la CNA / CAN, et les échanges se font parune liaison téléphonique moyennant une modulation FSK (Frequency Shift Key) selon le schéma deprincipe suivant :

�gure 6.2: Transmission avec modem

Les PC originaux utilisaient l'UART 8250, qui est toujours utilisée par un grand nombre decartes adaptateurs série du marché. L'évolution a conduit à l'UART 16550 (FIFO : tampon 16octets, débit 115.2 KBps → communications rapides) et très récemment à l'UART 16750 (FIFO 64octets, 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 niveaudes 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 Con�guration

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'estgénéralement la puce contrôleur d'interruption (PIC) 8259 qui traite ces requêtes d'attention. Surune con�guration 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 con�guré pour utiliser des adresses d'E/Sspéci�ques et des interruptions. Il est préférable d'utiliser les standards existants COM1 et COM2qui sont respectivement situés aux adresses de base 0x3F8 et 0x2F8.

83

Page 92: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 16550a�n de con�gurer 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'UARTLe 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 UARTo�set 0 1 2 3 4 5 6 7DLAB 0 0 1 1 0 x x x x x x 0 1R/W R W R/W R/W R/W R W R/W R/W R R R/WNOM RBR THR DLL DLM IER IIR FCR LCR MCR LSR MSR SCRbit 0 D0 D0 B0 B8 ERDA IP FE WLS0 DTR DR DCTS x P0bit 1 D1 D1 B1 B9 ETD ID1 RFR WLS1 RTS OE DDSR x P1bit 2 D2 D2 B2 B10 ERLS ID2 TFR STB OUT1 PE TERI x P2bit 3 D3 D3 B3 B11 EMS 0 DMS PEN OUT2 FE DDCD x P3bit 4 D4 D4 B4 B12 0 0 TTL EPS LOOP BI CTS x P4bit 5 D5 D5 B5 B13 0 0 TTM SP AFE THRE DSR x P5bit 6 D6 D6 B6 B14 0 FE1 RTL BC 0 TSRE RI x ILS/OSbit 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'adressede 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éci�ques de lecture /écriture :

84

Page 93: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.3. Les Registres de l'UART

� char inp(int AdressePort) lit un caractère (ASCII) sur le port situé à l'adresse AdressePortet 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 Bu�er 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'e�ectuent par le CPU au travers des registres d'émission THR etde 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 THRtandis 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é pard'autres registres. La donnée est ensuite transférée dans le registre à décalage d'émission (TSR) a�nde sérialiser la donnée sur la ligne d'émission TxD. Lorsque le registre d'émission est vide , l'étatest communiqué au système via THRE.

85

Page 94: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 estchargée dans le registre à décalage de réception (RSR) où l'on désérialise la donnée. Elle est ensuitetransférée dans le registre de réception (RBR) sous contrôle d'autres registres avant de transiter surle bus interne en direction du CPU.

86

Page 95: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.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 Signi�cant Byte) : registre LSB de division d'horloge ;• DLM (Divisor Latch Most signi�cant 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 DLABsoit positionné à 1 (pour ne pas accéder par défaut aux RBR-THR en +0 et à IER en +1). Lechargement se fait sur 2 registres car on a besoin de coder les valeurs sur 2 octets. Ces registrespermettent de diviser la fréquence d'entrée (déjà pré-divisée par 16) par la valeur chargée. Sur lesPC, les fréquences d'horloges sont de 1.8432 et 3.072 MHz. Le mode de calcul est le suivant :

vitesse transmission =fréquence horloge

16× (256×DLM + DLL)

Ci dessous, le tableau résumé des valeurs à charger pour une vitesse (standard de 1, 8432MHz)de transmission :

Vitesse (bauds) 50 300 1200 2400 4800 9600 19200 56200valeur (D) 2304 384 96 48 24 12 6 2valeur (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éci�er les conditions degé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 signi�e qu'il n'y aura pas de signal d'interruption émis pourl'événement désigné. Si tous les bits sont à 0, cela signi�e qu'il n'y aura aucun cas d'interruptionproduite par le circuit vers le gestionnaire d'interruption du PC (8259).

87

Page 96: Cours d'Informatique Industrielle

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

� bit 0 (ERDA : Enable Receive Data Avalaible int) : interruption quand données reçues dansRBR (0 = non et 1 = oui).

� bit 1 (ETD : Enable Transmit holding register Data available interrupt) : interruption produitelorsque 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 dumodem.

� bits 4 à 7 inutilisés et toujours à zéro.

6.3.4 IIR nature des interruptions• IIR (Interrupt Identi�cation Register) : registre d'identi�cation des interruptions.

L'accès se fait à l'adresse relative +2 en lecture seule. Il permet de traiter une interruption selon4 niveaux de priorité (interface avec un microprocesseur).

� bit 0 (IP : Interrupt Pending) : 0 signi�e interruption demandée et 1 dans le cas contraire,� bits 1 à 3 (ID1-ID2-ID3 : IDenti�cator 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 → FIFOsactivées mais inutilisables.

bits 3 à 0 InterruptionsID3 ID2 ID1 IP Priorité Type Source Arrêt0 0 0 1 aucune aucune aucune aucune0 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 RBR1 1 0 0 2 temps out char ds FIFO RBR R-RBR0 0 1 0 3 THR vide RxRDY R-IIR ou W-THR0 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 bu�er FIFO• FCR (FIFO Control Register) : registre de réglage des FIFO : bu�er d'émission / réception.

L'accès se fait à l'adresse relative +2 en écriture seule. Ce registre valide, e�ace les FIFO, règlele 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 e�ace la totalité des FIFOet empêche l'écriture des autres bits du registre.

� bit 1 (RFR : Receiver Fifo Reset) : e�ace contenu FIFO RBR (et pas le RSR lui-même).bistable (revient à 0 automatiquement après usage).

� bit 2 (TFR : Transmit Fifo Reset) : e�ace contenu FIFO THR (et pas le TSR lui-même).bistable (revient à 0 automatiquement après usage).

88

Page 97: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.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 octet0 1 4 octets1 0 8 octets1 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 stockedans un registre interne (RBR) et prévient (par interruption), qu'il est à disposition du programmede 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 untraitement des interruptions rapide.

En émission, lorsqu'un UART veut émettre, il reçoit en parallèle les données destinées au registred'é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. Avantagede FIFO THR : pas besoin d'attendre que le registre à décalage ait �ni avant d'envoyer les autresdonné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 nepeuvent récupérer qu'un seul octet à la fois (le dernier entré). On comprendra que l'e�et tampon estd'autant plus e�cace que le nombre d'octets pouvant être stocké est grand. Ce nombre est réglable

89

Page 98: Cours d'Informatique Industrielle

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

(�gure, bits 4-7). Si le nombre d'octets est su�sant, le processeur ne sera pas interrompu pendantses activités et aura le temps de vider les FIFO entre des écritures (ou des lectures) dans ce bu�er.

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éci�er le format de la trame de laliaison série (vitesse de transmission, nombre de bit de données pour le codage du caractère, nombrede 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 (codagesur 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 bits0 x x 5,6,7 ou 8 11 0 0 5 1,51 0 1 6 21 1 0 7 21 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é signi�cationx x 0 NP : No Parity aucune0 0 1 OP : Odd Parity impaire0 1 1 EP : Even Parity paire1 0 1 HP : High Parity haute : 11 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

Page 99: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.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 con�guration).� bit 5 (AFE : AutoFlow control Enable) : si 1, mode diagnostic : la donnée émise est immé-

diatement reçue. Cela permet de véri�er le bon fonctionnement du transfert de donnée (businterne).

� 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 latransmission. Il permet de connaître l'état des bu�ers de réception (bit 0 à 4) et de transmission (5et 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 FIFORBR). 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 lepré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'erreurs'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) estdétectée. Avec les FIFO, l'erreur s'applique au dernier caractère sortant (�rst out). Après uneerreur, 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, vitessesde transmission di�érentes entre ordinateurs). Avec les FIFO, l'erreur s'applique au derniercaractère sortant (�rst out). Après une erreur, l'UART attend 2 instants d'horloge au niveausur SIN pour autoriser le prochain caractère à traiter.

� bit 5 (THRE : Transmit Holding Register Empty) :1 si THR est vide, prêt à attendre unprochaine donnée (mis à 1 lorsque le transfert de THR vers TSR est e�ectué). 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 FIFORBR.

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 decontrô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

Page 100: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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'a�ecte pas les autres opérations de l'UART.Il permet de spéci�er une vitesse particulière de transmission via une horloge externe (connectéesur 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 : SiFré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 dela sortie de l'UART (OS : uart Output Select).

� Si DLAB = 0 : rien.

6.4 Programmer l'UART6.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éri�er 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éri�er si un caractère est présent dans le registre (RHR)� Lire le registre de réception RHR

92

Page 101: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.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 e�ectués, il faut prendre garde à ne pas perdre les caractères quicontinuent à 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 eninterruption, 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 (Bu�er) 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 nepas monopoliser le CPU lors de la transmision. Pour cela, on a recours aux interruptions et à l'uti-lisation d'une FIFO (ou bu�er) 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 �nd'é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 (bu�er) circulaire :

93

Page 102: Cours d'Informatique Industrielle

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

�gure 6.9: Tampon Circulaire (FIFO)

Le pointeur en écriture pointe sur un emplacement du tampon qui est libre. On écrit alors ladonnée à sauvegarder à cet emplacement et on incrémente le pointeur de façon à ce qu'il pointe surle 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 cepointeur 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é. Sion 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 pointeurd'écriture.

94

Page 103: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 176.5. Annexe : architecture interne d'un UART 16550

6.5 Annexe : architecture interne d'un UART 165505.0 Block Diagram

TL/C/8652–16

Note: Applicable pinout numbers are included within parenthesis.

10

�gure 6.10: Structure interne (registres) d'un UART 16550

95

Page 104: Cours d'Informatique Industrielle

Chapitre 7

I2C

Sommaire7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.2 Le protocole I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.3 La gestion des con�its . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.4 L'adressage des composants . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.5 Mode de transfert en adressage standard . . . . . . . . . . . . . . . . . . 1047.6 Mode de transfert en adressage étendu . . . . . . . . . . . . . . . . . . . 1067.7 La programmation du bus I2C . . . . . . . . . . . . . . . . . . . . . . . . 108

7.1 Introduction7.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 80par Philips semiconductors pour permettre de relier facilement à un microprocesseur les di�érentscircuits d'un téléviseur moderne sans augmenter les coûts. Depuis, des fabricants de plus en plusnombreux 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 solutionrelativement simple de réalisation d'un micro-réseau tri�laire de type série, synchrone, multi-maître à détection de collision avec hot-plugging. Un système utilisant ce bus peut représenter unealternative à 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 secharge 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 dansla gestion multi-maîtres des périphériques (qui nécessite donc un arbitrage). Ce bus est ainsi devenuun standard pour les liaisons lentes des périphériques �grand public�. Il est souvent quali�é de �petitbus� comparativement aux bus parallèles. toutefois, il possède certaines possibilités inconnues desautres bus :

� il ne nécessite que 2 �ls ;� il dispose de �ltres d'entrée qui rendent ino�ensives les impulsions parasites que peuvent

véhiculer les 2 �ls (SDA et SCL) ;

96

Page 105: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.1. Introduction

� les composants les plus lents peuvent allonger la période d'horloge pour faire attendre le circuitmaî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 decommuniquer entre eux grâce aux système d'arbitrage anti-collision. Le bus I2C est alors bienadapté 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 diversgrâ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) descircuits par l'intermédiaire de résistances de pull-up (RP). Ceci permet de maintenir le bus au niveauhaut 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. Leniveau 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 autreLED, LCD... Le nombre important de circuits intégrés comprenant l'interface I2C o�re de multiplesavantages aux concepteurs de systèmes électroniques. En e�et, l'atout majeur de cette liaison est depouvoir facilement connecter en parallèle sur le bus de nouveaux éléments ou d'échanger un élémentcontre un autre sans restructurer le système. En e�et, chaque point du bus possède une adresseexclusive (en nombre limité selon la capacité d'adressage).

Le nombre de composants qu'il est ainsi possible de relier est essentiellement limité par la chargecapacitive 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'à 400Kbits/s (50 ko/s) en mode rapide, ce qui ouvre la porte de cette technologie à toutes les applicationsoù la vitesse n'est pas primordiale.

97

Page 106: Cours d'Informatique Industrielle

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

7.1.3 Nouvelle caractéristiques

A�n de compenser quelques lacunes des premières spéci�cations du bus I2C, quelques nouvellesaméliorations ont été apportées :

� Le mode rapide : le bus à désormais la capacité de transmettre des données jusqu'à une vitessede 3.4 Mbits/s (0.425 Mo/s).

� Des entrées à Trigger de Schmitt : a�n 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çondont doivent réagir les circuits en cas de con�its.

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 e�ectuée(lecture ou écriture).

� le mode Multi-Maîtres : plusieurs circuits peuvent prendre la main sur le bus et décider desopé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écidedu sens de ce transfert et règle la communication en émettant les impulsions d'horloge sur la ligneSCL, les données sur SDA étant générées par le maître ou par l'esclave (suivant le sens de transfertréclamé par le maître). Un maître peut donc être récepteur ou émetteur. Un composant qui prendpart à la communication après avoir été appelé par le maître s'appelle esclave.

Le protocole I2C gère la liaison et les con�its éventuels grâce à la fonction logique �ET� entreles 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,5Volts, 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 litle fait pendant SCL=1.

98

Page 107: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.2. Le protocole I2C

Le BUS I2C.doc / FJ 6

• Le changement d'état: Quel que soit le niveau (haut ou bas) de laligne de données SDA sa valeur ne pourra changer que lorsque laligne d'horloge SCL sera à l'état BAS.

Conditions de départ start et d'arrêt stop.À l'intérieur du protocole de définition de l'I2C les situations qui régissentces conditions sont uniques. Il est à noter que ce sont des conditions dedépart et de stop et non des bits de départ et de stop.

Condition de start : Cette situation a lieu et uniquement lieu lorsque laligne de données SDA passe de l'état haut à l'état bas tandis que la ligned'horloge reste à l'état haut.Condition de stop : Cette situation a lieu et uniquement lieu lorsque laligne de données SDA passe de l'état bas à l'état haut tandis que la ligned'horloge reste à l'état haut.

À tout cela il faut ajouter les compléments suivants :• les conditions de start et de stop sont toujours créées par le maître,• le bus est dit occupé après la condition de départ,• le bus sera considéré comme libre après un certain temps (bien

défini) après la condition de stop.

2.7. Les formats de transmission.

2.7.1. Format des mots.Examinons maintenant les formats des mots et des transferts desdonnées.Chaque mot transmis sur la ligne de donnée SDA doit avoir unelongueur de 8 bits. Jusque là rien de particulier et ceci permettra de

�gure 7.2: Validité des données

7.2.3 Les conditions de début / �nPour prendre le contrôle du bus, il faut tout d'abord que celui-ci soit au repos (SDA=1 et SCL=1)

pendant un intervalle su�sant. Pour transmettre des données sur le bus, il faut donc surveiller deuxconditions particulières :

� La condition de départ (notée S) : SDA passe à '0' (front descendant) alors que SCL=1.� La condition d'arrêt (notée P) : SDA passe à '1' (front montant) alors que SCL=1.

Philips Semiconductors

The I2C-bus and how to use it(including specifications)

April 1995 6

SDA

SCL

DATA LINESTABLE:

DATA VALID

CHANGEOF DATA

ALLOWED

SU00361

Figure 5. Bit transfer on the I2C-bus

SDA

SCL

S P

SDA

SCL

STARTCONDITION

STOPCONDITION

SU00362

Figure 6. START and STOP conditions

5.0 BIT TRANSFERDue to the variety of different technology devices (CMOS, NMOS,bipolar) which can be connected to the I2C-bus, the levels of thelogical ‘0’ (LOW) and ‘1’ (HIGH) are not fixed and depend on theassociated level of VDD (see Section 15.0 for ElectricalSpecifications). One clock pulse is generated for each data bittransferred.

5.1 Data validityThe data on the SDA line must be stable during the HIGH period ofthe clock. The HIGH or LOW state of the data line can only changewhen the clock signal on the SCL line is LOW (see Figure 5).

5.2 START and STOP conditionsWithin the procedure of the I2C-bus, unique situations arise whichare defined as START and STOP conditions (see Figure 6).

A HIGH to LOW transition on the SDA line while SCL is HIGH is onesuch unique case. This situation indicates a START condition.

A LOW to HIGH transition on the SDA line while SCL is HIGHdefines a STOP condition.

START and STOP conditions are always generated by the master.The bus is considered to be busy after the START condition. Thebus is considered to be free again a certain time after the STOPcondition. This bus free situation is specified in Section 15.0.

Detection of START and STOP conditions by devices connected tothe bus is easy if they incorporate the necessary interfacinghardware. However, microcontrollers with no such interface have tosample the SDA line at least twice per clock period in order to sensethe transition.

�gure 7.3: Conditions de départ et d'arrêt de transmission du bus I2C

Lorsqu'un circuit, après avoir véri�é que le bus est libre, prend le contrôle de celui-ci, il endevient le maître. C'est lui qui génère le signal d'horloge. Les autres composants doivent continuerde scruter le bus en attendant la condition de Stop.Remarque 7.1 (Re-Départ). A la �n d'une trame on trouve une condition de stop (P). Le bus(re)devient libre au bout d'un temps d'environ 4,7 µs. Pour éviter le risque de perdre la main entrechaque 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-siteraient une séquence de Start (S) + Stop (P) et lui permet ainsi d'accélérer ses communicationspuisqu'il n'a pas besoin de renvoyer l'adresse du composant à chaque trame !

15

Philips Semiconductors

The I2C-bus specification

Fig.13 Combined format.

handbook, full pagewidth

MBC607

DATAAR/W

read or write

A/ADATAAR/W

(n bytes+ ack.)

directionof transfermay changeat this point.

read or write

(n bytes+ ack.)

Sr = repeated START condition

A/A

* *

* not shaded becausetransfer direction ofdata and acknowledge bitsdepends on R/W bits.

SLAVE ADDRESSS Sr PSLAVE ADDRESS

10 7-BIT ADDRESSING

The addressing procedure for the I2C-bus is such that the first byte after the START condition usually determines which slave will be selected by the master. The exception is the ‘general call’ address which can address all devices. When this address is used, all devices should, in theory, respond with an acknowledge. However, devices can be made to ignore this address. The second byte of the general call address then defines the action to be taken. This procedure is explained in more detail in Section 10.1.1. For information on 10-bit addressing, see Section 14

10.1 Definition of bits in the first byte

The first seven bits of the first byte make up the slave address (see Fig.14). The eighth bit is the LSB (least significant bit). It determines the direction of the message. A ‘zero’ in the least significant position of the first byte means that the master will write information to a selected slave. A ‘one’ in this position means that the master will read information from the slave.

When an address is sent, each device in a system compares the first seven bits after the START condition with its address. If they match, the device considers itself addressed by the master as a slave-receiver or slave-transmitter, depending on the R/W bit.

A slave address can be made-up of a fixed and a programmable part. Since it’s likely that there will be several identical devices in a system, the programmable part of the slave address enables the maximum possible number of such devices to be connected to the I2C-bus. The number of programmable address bits of a device depends on the number of pins available. For example, if a device has 4 fixed and 3 programmable address bits, a total of 8 identical devices can be connected to the same bus.

The I2C-bus committee coordinates allocation of I2C addresses. Further information can be obtained from the Philips representatives listed on the back cover. Two groups of eight addresses (0000XXX and 1111XXX) are reserved for the purposes shown in Table 2. The bit combination 11110XX of the slave address is reserved for 10-bit addressing (see Section 14).

Fig.14 The first byte after the START procedure.

handbook, halfpage

MBC608

R/W

LSBMSB

slave address

�gure 7.4: Re départ (bit SR)

99

Page 108: Cours d'Informatique Industrielle

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

7.2.4 La transmission de données d'un octetLes 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 bienc'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 instantun niveau �1� sur la ligne SCL. Lorsque SCL revient à �0�, il recommence l'opération jusqu'à ceque l'octet complet soit transmis. Il envoie alors un bit ACK à �1� tout en scrutant l'état réel deSDA. L'esclave doit alors imposer un niveau �0� pour signaler au maître que la transmission s'este�ectuée correctement. Les sorties de chacun étant à collecteur ouvert, le maître voit le �0� et peutalors 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 circuitsconnectés sur le bus détectent la condition Start (par interruption). Seul le circuit reconnaissant sonadresse 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

Page 109: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.3. La gestion des con�its

(�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 pausede la manière suivante :

�gure 7.7: Pause

7.2.4.3 Lecture d'une donnéeLa 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 con�its7.3.1 La synchronisation

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

101

Page 110: Cours d'Informatique Industrielle

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

e�ectivement au niveau bas et le maître est bloqué. Le résultat est que le bus se synchronise sur lapériode la plus basse, donc le circuit le plus lent (qui peut être un maître lent ou bien un esclavequi a besoin de temps d'attente).

7.3.2 L'arbitrage7.3.2.1 Contexte

La structure même du bus I2C a été conçue pour pouvoir y accueillir plusieurs maîtres. Sepose alors le problème commun à tout les réseaux utilisant un canal de communication unique :le contrôle du bus. En e�et, chaque maître pouvant prendre possession du bus dès que celui-ci estlibre, il existe la possibilité que deux maîtres désirent prendre la main en même temps. Si cela nepose pas de problème sur le plan électrique grâce à l'utilisation de collecteurs ouverts, il faut pouvoirdétecter cet état pour éviter la corruption des données transmises.

7.3.2.2 PrincipeComme nous l'avons vu précédemment, pour prendre le contrôle du bus, un maître potentiel doit

d'abord véri�er que celui-ci soit libre et qu'une condition d'arrêt a bien été envoyée depuis au moins4, 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 étathaut et relit un état bas reconnaît qu'un autre maître utilise le bus et perd le contrôle du bus donccesse sa transmission.

Chaque circuit véri�e en permanence l'état des lignes SDA et SCL y compris lorsqu'ils sont euxmê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 pascorrompues, la transmission s'e�ectue normalement, comme si un seul maître avait parlé. Cecas est très rare, voire impossible.

� Un maître impose un �0� sur le bus : il relira forcément �0� et continuera à transmettre. Il nepeut pas alors détecter un éventuel con�it.

� Un maître cherche à appliquer un �1� sur le bus : s'il ne relit pas un niveau �1�, c'est qu'unautre maître a pris la main en même temps. Le premier perd alors immédiatement le contrôledu bus, pour ne pas perturber la transmission du second. Il continue néanmoins à lire lesdonnées au cas où celles-ci lui auraient été destinées.

7.3.2.3 Mise en situationSoit le chronogramme suivant :

�gure 7.9: Exemple de collision (ou con�it)

102

Page 111: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.4. L'adressage des composants

avec SCLR : Horloge résultante, SDA 1 : SDA maître 1, SDA 2 : SDA maître 2, SDA R : SDAréel résultant (lus par les deux maîtres).

7.3.2.4 AnalyseLe 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 voitpas le con�it et continue à transmettre normalement (Cas 2). En conclusion, l'esclave à reçu lesdonnées du maître 1 sans erreurs et le con�it est passé inaperçu.Remarque 7.3 (Arbitrage et collisions). A partir du mécanisme d'arbitrage, on peut déduire3 conséquences :

1. Les adresses les plus faibles sont prioritaires sur les plus élevées. Dans la construction d'unsystème I2C à plusieurs esclaves, les esclaves les plus prioritaires se verront a�ecter les adresseles 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 composants7.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'aided'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 standardL'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 unedonnée, ceci permet au maître de véri�er si l'esclave est disponible ou que l'adresse n'est pas celled'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

Page 112: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 lenombre total. Attention : 2 cas possibles selon adressage 7 bits ou bien 10 bits.

adresse fonction description0000 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 rapides0000 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 protocoles0000 0110 Reset Remet tout les registres des circuits connectés dans leur état

initial (équivalent à celui lors de la mise sous tension). Lescircuits 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 signi�er l'écriture. Le premier ACK vient de l'esclavepour la bonne réception de l'adresse et les ACK suivant signi�ent la bonne réception par l'esclavedes données à écrire. Lorsque la dernière donnée est écrite, l'esclave envoie ACK puis le maîtretermine par P :

104

Page 113: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.5. Mode de transfert en adressage standard

�gure 7.12: Ecriture multiple

7.5.2 Lecture du maîtreLe maître positionne le bit R/W à �1� pour signi�er 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éelue. Lorsque le maître a �nir de lire, il envoie NAK puis P :

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

15

Philips Semiconductors

The I2C-bus specification

Fig.13 Combined format.

handbook, full pagewidth

MBC607

DATAAR/W

read or write

A/ADATAAR/W

(n bytes+ ack.)

directionof transfermay changeat this point.

read or write

(n bytes+ ack.)

Sr = repeated START condition

A/A

* *

* not shaded becausetransfer direction ofdata and acknowledge bitsdepends on R/W bits.

SLAVE ADDRESSS Sr PSLAVE ADDRESS

10 7-BIT ADDRESSING

The addressing procedure for the I2C-bus is such that the first byte after the START condition usually determines which slave will be selected by the master. The exception is the ‘general call’ address which can address all devices. When this address is used, all devices should, in theory, respond with an acknowledge. However, devices can be made to ignore this address. The second byte of the general call address then defines the action to be taken. This procedure is explained in more detail in Section 10.1.1. For information on 10-bit addressing, see Section 14

10.1 Definition of bits in the first byte

The first seven bits of the first byte make up the slave address (see Fig.14). The eighth bit is the LSB (least significant bit). It determines the direction of the message. A ‘zero’ in the least significant position of the first byte means that the master will write information to a selected slave. A ‘one’ in this position means that the master will read information from the slave.

When an address is sent, each device in a system compares the first seven bits after the START condition with its address. If they match, the device considers itself addressed by the master as a slave-receiver or slave-transmitter, depending on the R/W bit.

A slave address can be made-up of a fixed and a programmable part. Since it’s likely that there will be several identical devices in a system, the programmable part of the slave address enables the maximum possible number of such devices to be connected to the I2C-bus. The number of programmable address bits of a device depends on the number of pins available. For example, if a device has 4 fixed and 3 programmable address bits, a total of 8 identical devices can be connected to the same bus.

The I2C-bus committee coordinates allocation of I2C addresses. Further information can be obtained from the Philips representatives listed on the back cover. Two groups of eight addresses (0000XXX and 1111XXX) are reserved for the purposes shown in Table 2. The bit combination 11110XX of the slave address is reserved for 10-bit addressing (see Section 14).

Fig.14 The first byte after the START procedure.

handbook, halfpage

MBC608

R/W

LSBMSB

slave address

�gure 7.14: format combiné

7.5.4 Cas particuliers7.5.4.1 Les mémoires

Cas particulier des mémoires : L'espace adressable d'un circuit de mémoire étant sensiblementplus grand que la plupart des autres types de circuits, l'adresse d'une information y est codée sur

105

Page 114: Cours d'Informatique Industrielle

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

deux octets ou plus. Le premier représente toujours l'adresse(physique) du circuit et les suivantsl'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élangerdes composants standard avec des composants étendus). Le principe repose sur le fait qu'il fautenvoyer 2 octets pour avoir une adresse sur 10 bits. Le premier comporte une combinaison de bitsparticulière (de la forme 1111 0xx). Ici �xx� représentent les 2 bits de poids fort de l'adresse. Les 8bits de poids faibles constituent le 2ème octet.

�gure 7.17: Adressage étendu (10 bits)

106

Page 115: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 177.6. Mode de transfert en adressage étendu

7.6.2 Ecriture du maître

28

Philips Semiconductors

The I2C-bus specification

condition (P) or a repeated START condition (Sr) followed by a different slave address.

• Master-receiver reads slave- transmitter with a 10-bit slave address.The transfer direction is changed after the second R/W bit (Fig.27). Up to and including acknowledge bit A2, the procedure is the same as that described for a master-transmitter addressing a slave-receiver. After the repeated START condition (Sr), a matching slave remembers that it was addressed before. This slave then checks if the first seven bits of the first byte of the slave address following Sr are the same as they were after the START condition (S), and tests if the eighth (R/W) bit is 1. If there is a match, the slave considers that it has been addressed as a transmitter and generates acknowledge A3. The slave-transmitter remains addressed until it receives a STOP condition (P) or until it receives another repeated START condition (Sr) followed by a different slave address. After a repeated START condition (Sr), all the other slave devices will also compare the first seven bits of the first byte of the slave address (11110XX) with their own addresses and test the eighth (R/W) bit. However, none of them will be addressed because R/W = 1 (for 10-bit devices), or the 11110XX slave address (for 7-bit devices) does not match.

• Combined format. A master transmits data to a slave and then reads data from the same slave (Fig.28). The same master occupies the bus all the time. The transfer direction is changed after the second R/W bit.

• Combined format. A master transmits data to one slave and then transmits data to another slave (Fig.29). The same master occupies the bus all the time.

• Combined format. 10-bit and 7-bit addressing combined in one serial transfer (Fig.30). After each START condition (S), or each repeated START condition (Sr), a 10-bit or 7-bit slave address can be transmitted. Figure 30 shows how a master transmits data to a slave with a 7-bit address and then transmits data to a second slave with a 10-bit address. The same master occupies the bus all the time.

NOTES:

1. Combined formats can be used, for example, to control a serial memory. During the first data byte, the internal memory location has to be written. After the START condition and slave address is repeated, data can be transferred.

2. All decisions on auto-increment or decrement of previously accessed memory locations etc. are taken by the designer of the device.

3. Each byte is followed by an acknowledgment bit as indicated by the A or blocks in the sequence.

4. I2C-bus compatible devices must reset their bus logic on receipt of a START or repeated START condition such that they all anticipate the sending of a slave address.

Fig.26 A master-transmitter addresses a slave-receiver with a 10-bit address.

handbook, full pagewidth

MBC613

R/W A1

(write)

A2 A A/A

1 1 1 1 0 X X 0

SLAVE ADDRESS1st 7 BITSS DATA PDATASLAVE ADDRESS

2nd BYTE

Fig.27 A master-receiver addresses a slave-transmitter with a 10-bit address.

handbook, full pagewidth

MBC614

R/W A1

(write)

A3 DATA DATAA2 R/W

(read)

1 1 1 1 0 X X 0 1 1 1 1 0 X X 1

AA PSrSLAVE ADDRESS1st 7 BITS

SLAVE ADDRESS2nd BYTE

SLAVE ADDRESS1st 7 BITSS

�gure 7.18: Ecriture en mode étendu

7.6.3 Lecture du maître

28

Philips Semiconductors

The I2C-bus specification

condition (P) or a repeated START condition (Sr) followed by a different slave address.

• Master-receiver reads slave- transmitter with a 10-bit slave address.The transfer direction is changed after the second R/W bit (Fig.27). Up to and including acknowledge bit A2, the procedure is the same as that described for a master-transmitter addressing a slave-receiver. After the repeated START condition (Sr), a matching slave remembers that it was addressed before. This slave then checks if the first seven bits of the first byte of the slave address following Sr are the same as they were after the START condition (S), and tests if the eighth (R/W) bit is 1. If there is a match, the slave considers that it has been addressed as a transmitter and generates acknowledge A3. The slave-transmitter remains addressed until it receives a STOP condition (P) or until it receives another repeated START condition (Sr) followed by a different slave address. After a repeated START condition (Sr), all the other slave devices will also compare the first seven bits of the first byte of the slave address (11110XX) with their own addresses and test the eighth (R/W) bit. However, none of them will be addressed because R/W = 1 (for 10-bit devices), or the 11110XX slave address (for 7-bit devices) does not match.

• Combined format. A master transmits data to a slave and then reads data from the same slave (Fig.28). The same master occupies the bus all the time. The transfer direction is changed after the second R/W bit.

• Combined format. A master transmits data to one slave and then transmits data to another slave (Fig.29). The same master occupies the bus all the time.

• Combined format. 10-bit and 7-bit addressing combined in one serial transfer (Fig.30). After each START condition (S), or each repeated START condition (Sr), a 10-bit or 7-bit slave address can be transmitted. Figure 30 shows how a master transmits data to a slave with a 7-bit address and then transmits data to a second slave with a 10-bit address. The same master occupies the bus all the time.

NOTES:

1. Combined formats can be used, for example, to control a serial memory. During the first data byte, the internal memory location has to be written. After the START condition and slave address is repeated, data can be transferred.

2. All decisions on auto-increment or decrement of previously accessed memory locations etc. are taken by the designer of the device.

3. Each byte is followed by an acknowledgment bit as indicated by the A or blocks in the sequence.

4. I2C-bus compatible devices must reset their bus logic on receipt of a START or repeated START condition such that they all anticipate the sending of a slave address.

Fig.26 A master-transmitter addresses a slave-receiver with a 10-bit address.

handbook, full pagewidth

MBC613

R/W A1

(write)

A2 A A/A

1 1 1 1 0 X X 0

SLAVE ADDRESS1st 7 BITSS DATA PDATASLAVE ADDRESS

2nd BYTE

Fig.27 A master-receiver addresses a slave-transmitter with a 10-bit address.

handbook, full pagewidth

MBC614

R/W A1

(write)

A3 DATA DATAA2 R/W

(read)

1 1 1 1 0 X X 0 1 1 1 1 0 X X 1

AA PSrSLAVE ADDRESS1st 7 BITS

SLAVE ADDRESS2nd BYTE

SLAVE ADDRESS1st 7 BITSS

�gure 7.19: Lecture en mode étendu

7.6.4 Formats combinés

29

Philips Semiconductors

The I2C-bus specification

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 pagewidth

MBC615

(write)

A DATA DATAR/W

(read)

R/W A A A A/A

1 1 1 1 0 X X

1 1 1 1 0 X X 1

0

S SLAVE ADDRESS1st 7 BITS

SLAVE ADDRESS2nd BYTE

DATA DATA

A PASr SLAVE ADDRESS1st 7 BITS

handbook, full pagewidth

MBC616

(write)

A A A/A

(write)

A

A A A A/A

1 1 1 1 0 X X

1 1 1 1 0 X X

0

0

S SLAVE ADDRESS1st 7 BITS R/W

SLAVE ADDRESS2nd BYTE DATA DATA

Sr SLAVE ADDRESS1st 7 BITS R/W 2nd BYTE

SLAVE ADDRESS DATA PDATA

Fig.29 Combined format. A master transmits data to two slaves, both with 10-bit addresses.

Fig.30 Combined format. A master transmits data to two slaves, one with a 7-bit address, and one with a 10-bit address.

dbook, full pagewidth

MBC617

R/W A

(write)

A A A/AR/W

(write)

A A/A

A

1 1 1 1 0 X X

0

0

SSLAVE ADDRESS

7 - BIT DATADATA

DATADATA PSLAVE ADDRESS1st 7 BITS OF 10-BITSr SLAVE ADDRESS

2nd BYTE OF 10-BIT

�gure 7.20: Ecriture puis lecture en mode étendu

29

Philips Semiconductors

The I2C-bus specification

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 pagewidth

MBC615

(write)

A DATA DATAR/W

(read)

R/W A A A A/A

1 1 1 1 0 X X

1 1 1 1 0 X X 1

0

S SLAVE ADDRESS1st 7 BITS

SLAVE ADDRESS2nd BYTE

DATA DATA

A PASr SLAVE ADDRESS1st 7 BITS

handbook, full pagewidth

MBC616

(write)

A A A/A

(write)

A

A A A A/A

1 1 1 1 0 X X

1 1 1 1 0 X X

0

0

S SLAVE ADDRESS1st 7 BITS R/W

SLAVE ADDRESS2nd BYTE DATA DATA

Sr SLAVE ADDRESS1st 7 BITS R/W 2nd BYTE

SLAVE ADDRESS DATA PDATA

Fig.29 Combined format. A master transmits data to two slaves, both with 10-bit addresses.

Fig.30 Combined format. A master transmits data to two slaves, one with a 7-bit address, and one with a 10-bit address.

dbook, full pagewidth

MBC617

R/W A

(write)

A A A/AR/W

(write)

A A/A

A

1 1 1 1 0 X X

0

0

SSLAVE ADDRESS

7 - BIT DATADATA

DATADATA PSLAVE ADDRESS1st 7 BITS OF 10-BITSr SLAVE ADDRESS

2nd BYTE OF 10-BIT

�gure 7.21: Ecriture en mode standard puis étendu

107

Page 116: Cours d'Informatique Industrielle

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

7.7 La programmation du bus I2CExemple de fonctions pour driver si on connecte SDA et SCL à la liaison série comme suit :

UNIVERSITE DE CAEN ANNEE 2004 / 2005UFR de Sciences 1ère session / Février 2005

Mercredi 26 Janvier 2005

1

Licences E.E.A. & Ingénierie ElectriqueExamen d’Informatique Industrielle – IEL326T1

Durée : 1 h 30

Chaque candidat doit, au début de l’épreuve, porter son nom dans le coin de la copie qu’ilcachera par collage après avoir été pointé. Il devra en outre porter son numéro de place surchacune des copies, intercalaires, ou pièces annexées.

Documents Autorisés : Polycopié de Cours

Partie architecture & transmission de données

1) PROTOCOLE I2COn décide de connecter le bus I2C à la liaison série d’un PC. Le but est de pouvoir utiliser le busI2C afin d’y connecter de nombreux périphériques. On doit donc écrire un pilote (« driver ») pourconfigurer et gérer le protocole I2C. En particulier, on demande d’écrire les fonctions relatives àl’initialisation du bus I2C (I2C_init), et à la détection des états de début (START), de fin decommunication (STOP) et d’acquittement (ACK). On ne demande pas de réaliser les fonctionsd’écriture et de lecture de ce bus I2C. La connexion se fait selon le principe suivant : R sont lesrésistances de rappel et on relie les lignes SDA et SCL à la masse (GRD) pour l’adaptationélectrique. Le sens des lignes est donné par le sens des flèches. Le schéma est :

Il suffit alors de lire l’état du registre MCR (COM1 + 4) de l’UART et de lire ou écrire les valeursdes bits correspondant aux conditions d’initialisation du bus et aux conditions de START, STOP etACKnowledge.a) Compléter les instructions manquantes pour réaliser la connexion du bus I2C à la liaison série

#include <ansi_c.h>#define COM1 0x3F8 /*adresse de base du port série COM1 */

void I2C_init( void);{outp( COM1 + 4 ) = 2 ; /* SCL = 1; SDA = 1 */

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

Il su�t alors de lire l'état du registre MCR (COM1 + 4) de l'UART et de lire ou écrire lesvaleurs des bits correspondant aux conditions d'initialisation du bus et aux conditions S, P et ACK.#include <ansi_c.h>#de�ne COM1 0x3F8 /*adresse base port série COM1*/#de�ne MCR /*adresse du registre MCR (utiliser COM1)*/

void I2Cinit( void) ;{outp(MCR , 3 ) ; /* Bus au repos : SDA = 1 ; SCL = 1 ; */}

void Start (void) ;{outp (MCR , 2 ) ;/* SCL = 1 ; SDA = 0 ; */outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */}

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

Page 117: Cours d'Informatique Industrielle

Chapitre 8

USB

Sommaire8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.2 Transactions et Transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.3 Protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148.4 Types de transferts (terminaisons) . . . . . . . . . . . . . . . . . . . . . . 1218.5 Enumération et Descripteurs USB . . . . . . . . . . . . . . . . . . . . . . 1258.6 Sur votre PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

8.1 IntroductionLa 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 deces périphériques hétéroclites. Les ports série / parallèle, avec leurs caractéristiques désuètes, voientleur utilité décroître au pro�t 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 commele SCSI (domaine professionnel). Nous allons étudier l'interface USB qui représente une nouvelleliaison série synchrone.

8.1.1 USB 1.1 et 2.0La première version de l�Universal Serial Bus, l�interface USB 1.1, permet de connecter à un

micro-ordinateur jusqu�à 127 (adressage sur 7 bits) périphériques pour un débit théorique maximalde 12 Mbits/s, (soit 1.5 Mo/s), le tout sur un bus série comme son nom l�indique. Principale-ment destiné aux périphériques lents, l�interface 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.

L�USB 2.0 (12/2000) s�enrichit d�une 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 gainen vitesse a été notamment possible grâce à la réduction du voltage des signaux transmis dans lescâbles, ceux-ci passant de 3.3V à 0.4V. Les périphériques répondant à la norme 2.0 ne peuvent pasbéné�cier de la vitesse haute s�ils 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

Page 118: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 direque cette interface est vouée à remplacer à court terme toutes les autres interfaces d�entrées/sortiesde 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ébitsréels sont en fait plus faibles. En e�et, le bus doit faire passer, outre les données, les bitsd'états, de contrôles et les bits d'erreurs. De plus, plusieurs périphériques peuvent se partagerle 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 tensionentre D+ et D-), hot swapping.

� Une seule IRQ pour tous les périphériques connectés au port (�n aux pb de con�its).� 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 con�guration sur le terrain� Adaptation aisée à de nouveaux types de périphériques (adressage dynamique).� Support de l�architecture 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âblesLe 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 pourrelier tous périphériques au micro-ordinateur :

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

110

Page 119: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.1. Introduction

Ce câble se compose de 4 �ls, une paire torsadée pour le transfert des données, un �l au potentielde +5V qui permet d�alimenter les périphériques USB si nécessaire et en�n 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èresuivante : 1 (rouge) :

1. alimentation (Vbus), rouge2. D- (Data), blanc3. D+ (Data), vert4. 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érancesupérieure aux perturbations électromagnétiques. Un blindage est fortement recommandé pour uneutilisation pleine vitesse à 12 Mbits/s (longueur max de 5 mètres de câble entre 2 éléments). En�n,un autre atout de ce bus est qu�il peut transporter l�alimentation des périphériques s�y raccordant,dans la limite de 500 mA pour un appareil relié à un port le permettant.

8.1.3 TopologieL�USB 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 n�importe 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

Page 120: Cours d'Informatique Industrielle

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

�gure 8.4: Structure étoile série

Un élément supplémentaire s�avère indispensable à la connexion d�un certain nombre de péri-phériques USB au contrôleur principal (situé dans le South Bridge du chipset de la carte mère ousur une carte additionnelle). En général, on ne dispose pas de plus de 5 connecteurs USB. Il devientalors nécessaire d�introduire dans l�arborescence 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 etles 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

Page 121: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.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éci�cation 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 d�alimentation individuel pour chaque port(hub �classique�) et d�autres 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 TransfertsLa possibilité d�une 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 transmissions1. mode asynchrone : comme un port série classique2. 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 unpaquet pour maintenir tous les périphériques synchronisés).

8.2.2 �PIPE� : Préliminaire à la communicationIl 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) identi�e 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) : con�guration, états, initialisation des

périphériques.2. Bulk Data Transfers : (paquets en bloc, en rafale de données (imprimantes, scanners).3. Interrupts Transfers : (paquets d�interruption) : 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équencementBus synchrone : 1 ms par trame (donc bus cadencé à 1 KHz)

113

Page 122: Cours d'Informatique Industrielle

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

8.3 Protocole USBLe 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 laréalisation d'un élément USB de bien délimiter son travail en respectant les spéci�cations attenduespar 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 tousles 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 hostinitie toutes les transactions. Le premier paquet (le jeton) est produit par le host pour décrire cequi va suivre, si la transaction de données sera en lecture ou en écriture, ce que sera l'adresse del'appareil et la terminaison (mode de transfert) désignée. Le jeton contient donc une grande partiede 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. Lejeton contient l'adresse du périphérique (codée sur 7 bits = 27 =128 périphériques-1 car adresse

114

Page 123: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.3. Protocole USB

'0' est réservée, adresse par défaut avant a�ectation) qui désigne le périphérique concerné. Si cedernier reconnaît son adresse dans le jeton, il envoie un paquet de données en réponse, sinon, il faitsuivre aux autres périphériques qui lui sont chaînés. En détail, un client envoie au système USB unerequête transformée en IRP (Input-output Request Packet) par le driver USB. Le host gère la listedes 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 sontbien dé�nis (Token, Data, Handshake) dans les protocoles.

8.3.1 PIPEDé�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. Achaque 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ées2 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 communicationLa 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 transformerle �ot de bits arrivant en parallèle dans les bu�ers du contrôleur hôte, en un �ux de données sérieconforme à la spéci�cation USB. Ce �ux est constitué d'un ensemble de bits interprétables dans unefenêtre de temps déterminée. Cette taille de fenêtre est �xée à une milliseconde et l'ensemble desbits 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.

_______________________________________________________________________________________________ COMMUNICATION AVEC LES PÉRIPHÉRIQUES

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite.© Techniques de l’Ingénieur, traité Informatique industrielle S 8 590 − 21

— un ensemble de transactions de différents types entre hôte etpériphériques ;

— l’intervalle de fin de trame (End Of Frame – EOF) qui est unepériode comprise entre la dernière transaction émise dans la trameet le jeton SOF de la trame suivante. Pendant cette période toutesles transmissions cessent pour permettre l’envoi du nouveau jetonSOF.

Les trames circulent sans arrêt sur le bus sauf exceptionnellementdans le cas où le contrôleur hôte bascule en mode passif. Par exem-ple, quand un ordinateur portable passe en mode veille pour écono-miser son énergie.

■ Dans la couche médiane, pour permettre des conceptions diffé-rentes du contrôleur hôte, on place le pilote du contrôleur hôte (HostController Driver – HCD). Au-dessus, mais toujours dans la mêmecouche, on trouve le pilote USB (USB Driver – USBD). Cette sépara-tion de pilote permet de réaliser un USBD sans se soucier de lamanière dont le fabricant a implanté sa combinaison matérielle /logicielle à l’intérieur de l’ordinateur hôte. Il existe donc une inter-face entre le HCD et l’USBD : l’HDCI (HCD Interface). Elle n’est pasaccessible par le logiciel client et est dépendante du systèmed’exploitation et du contrôleur hôte. Cette interface n’est pas définiedans la spécification.

L’USBD fournit aux logiciels clients un ensemble de routines utili-sables pour communiquer sur le bus. Cette interface est appeléeUSBDI (USBD Interface). Elle fournit des mécanismes de transfert dedonnées sous forme de paquets de requête d’entrée-sortie (IRPs)qui doivent circuler à travers un tuyau spécifique, y compris le tuyaupar défaut.

Dans certains systèmes d’exploitation il existe un logiciel hôte(host software) optionnel non décrit dans la spécification USB quifournit les mécanismes de configuration et de chargement automa-tique du pilote de périphérique (plug and play).

4.6 Périphérique logique USB

La figure 25 détaille les différents composants du périphériquelogique USB organisés dans le système en couche décrit figure 21.

Nous allons décrire le fonctionnement d’un périphérique USB, àtravers les différents états par lesquels le périphérique va passer. Eneffet, l’état d’un périphérique évolue au cours du temps en respec-tant un diagramme d’état (voir figure 26).

Les six états définis dans la spécification sont : — attaché : le périphérique est logiquement attaché au bus, c’est-

à-dire qu’il fait partie de la topologie logique de l’hôte ;— alimenté : le périphérique est considéré comme alimenté

quand le hub sur lequel il est raccordé a activé le port correspon-dant. Les appareils USB peuvent être alimentés soit de manièreexterne, soit par le bus, soit de manière mixte ;

— par défaut : une fois alimenté, l’appareil attend une initialisa-tion (reset) du bus qui va lui permettre d’utiliser l’adresse par défautavant d’obtenir une adresse valide qui l’identifie ;

— adresse assignée : le périphérique passe dans ce mode quandl’hôte lui a donné son adresse définitive. Cette adresse est conser-vée même s’il passe en mode suspendu ;

— configuré : c’est le mode dans lequel l’appareil devient utilisa-ble par un client logiciel. Le passage dans ce mode est réalisé parl’hôte en plaçant une valeur différente de zéro dans le registre deconfiguration du périphérique ;

— suspendu : il peut se présenter à différents instants comme onle voit dans le diagramme d’état (figure 26). D’une manière géné-rale, c’est l’état dans lequel passe le périphérique en arrêtant deconsommer de l’énergie sur le bus après une certaine périoded’inactivité. Nous avons vu (§ 4.5) que ce mode suspendu peut aussiêtre initié par l’hôte.

4.7 Format des paquets

Le protocole USB permet aux périphériques et à l’hôte d’échangerdes paquets de bits via le câble. Les bits circulent sur un bus sérieles uns à la suite des autres et sont codés de manière à garantir unebonne synchronisation entre hôte et périphériques. Le codage estde type NRZI (Non Return to Zero Inverted) avec bourrage de bits.Ces derniers sont ordonnés sur le câble du moins significatif (LSB)au plus significatif (MSB).

Un bit isolé ne représente rien, le périphérique doit d’abord isolerune trame (toutes les millisecondes). Dans cette trame, on retrouvedes ensembles de paquets réalisant des fonctions particulièresappelées transactions. C’est toujours l’hôte qui initie la transactionet c’est le périphérique qui a été sélectionné par l’hôte qui peut alorsutiliser le bus. Il reçoit en quelque sorte la permission de parler aumoment où il reçoit le jeton initiateur (SOF). Le protocole USB fonc-tionne, en effet, sur le principe du bus à jeton. Dans cette configura-tion un périphérique peut utiliser le bus à condition de détenir lejeton. La manière de distribuer le jeton et l’ordre dans lequel lespaquets vont circuler sur le bus sont définis dans le protocole régis-sant le fonctionnement du bus.

Figure 24 – Génération de trame sur le bus physique

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 trameEOF End of Frame : intervalle de fin de trame

Figure 25 – Détails d’un périphérique logique USB

Logiciel client(gère les interfaces)

Pilote ducontrôleur hôte

SIE

Périphérique logique USB

Groupes de tuyaux

Tuyau par défaut

Câbles USB

�gure 8.7: Frame USB

115

Page 124: Cours d'Informatique Industrielle

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

Un bit isolé ne signi�e rien. On trouvera toujours un paquet. Dans le cas où il n'y a aucun travaila e�ectuer, 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 ensemblesde 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 lehost qui peut alors utiliser le bus. Il reçoit la permission de parler au moment où il reçoit le jeton

116

Page 125: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.3. Protocole USB

initiateur (SOF). La manière de distribuer le jeton et l'ordre dans lequel les paquets vont circulersur le bus sont dé�nis dans le protocole régissant le fonctionnement du bus.

8.3.3 Format des paquetsChaque paquet (Token, Data ou Handshake) est structuré de la manière suivante :� un identi�cateur (PID)� une information spéci�que 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 desynchronisation utilisant le codage NRZI (un �1� logique est un non changement d'état au contrairedu �0� logique) et le bit stu�ng (on met un �0� après six �1� logique consécutifs pour forcer unetransition NRZI et ainsi éviter les pertes de données) :

�gure 8.12: Codage NRZI)

8.3.4 Types de paquetsLe 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 detransporter l'adresse et le sens du transfert. Il contient un champ PID, un champADDResse,un champ terminaison (ENDP) et un champ de contrôle d'erreur CRC 5. Il y a 3 sortes dejetons possibles :� Jeton IN informe l'appareil que le host veut lire des informations.

117

Page 126: Cours d'Informatique Industrielle

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

� Jeton OUT informe l'appareil que le host veut envoyer des informations.� Jeton SETUP est utilisé pour commencer les transferts de commande (généralement pour

la con�guration d'un dispositif).

La norme USB en quelques mots v1.0 - 21/09/02

Fait par Matthieu KUHN – Mise à jour sur http://u.s.b.free.fr - Email : [email protected] 20

Les paquets Token doivent se conformer au format suivant,

Figure 10 : Format du paquet Token

b. Les paquets Data

Il y a 2 sortes de paquets de données pour la norme 1.1 ( Data0 et Data1) Le mode High Speed définit 2 autres PIDs de données, DATA2 et MDATA.

o La taille maximale de données " données utiles " pour les périphériques Low Speed vitesse est de 8 octets.

o La taille maximale de données " données utiles " pour les périphériques Full Speed est de 64 octets.

o La taille maximale de données " données utiles " pour les périphériques High Speed est de 1024 octets.

o Les données doivent être envoyées en multiple d'octets.

Les paquets de Data ont le format suivant :

Figure 11 : Format du paquet Data

c. Les paquets « Handshake »

Il y a 3 sortes de paquets Handshake qui font simplement partie du PID.

o ACK - validant que le paquet a été reçu correctement.

PID ADDR ENDP CRC

8 bits 7 bits 4 bits 3 bits

IN OUT SETUP

PID DATA CRC16

8 bits 0-1023 bytes 16 bits

DATA0 DATA1

�gure 8.13: Champ du paquet Token (Jeton)

SOF : paquet de début de trame : il est envoyé par le host toutes les 1ms (en Full speed) ou bientoutes les 125ms (en High speed). Il est composé de 3 champs : PID-Frame-CRC 5 :

La norme USB en quelques mots v1.0 - 21/09/02

Fait par Matthieu KUHN – Mise à jour sur http://u.s.b.free.fr - Email : [email protected] 21

o NAK - Indique que l'appareil ne peut temporairement ni envoyer ou recevoir des données. Aussi utilisé pendant les transactions d'interruptions pour avertir l'hôte qu'il n'a pas de données à envoyer.

o STALL (Bloqué) - L'appareil se retrouve dans un état qui va exiger l'intervention de l'hôte.

Les paquets Handshake ont le format suivant :

Figure 12 : Format du paquet Handshake

d. Les paquets SOF

Le paquet SOF composé d'une trame de 11 bits est envoyé par l'hôte toutes les 1ms ± 500ns sur un bus Full Speed vitesse ou bien toutes les 125µs ± 0,0625µs sur un bus High Speed. Les paquets SOF ont le format suivant :

Figure 13 : Format du paquet SOF Le standard USB assure une grande fiabilité des transferts par la détection de nombreuses erreurs au niveau hardware. :

Erreur de paquets o Paquet ID o Bit Stuff o CRC o Data Toggle

Time-out ( absence de réponse ) ‘Babling’ LOA (Loss of Activity)

Toute détection d’une erreur de paquet est traduit par la non réponse du périphérique, c’est à dire un Time Out.

PID

8 bits

ACK NACK STALL

PID Frame Number CRC5

8 bits 11 bits 5 bits

SOF

�gure 8.14: Champ du paquet SOF

DATA : paquet de données. Il y a 3 sortes de paquets de données :� DATA 0 : 8 octets (Low speed) USB 1.1.� DATA 1 : 64 octets (Full speed) USB 1.1.� DATA2 et MDATA : 1024 octets (High speed) USB 2.Il est composé de 3 champs : PID-DATA-CRC 16.

La norme USB en quelques mots v1.0 - 21/09/02

Fait par Matthieu KUHN – Mise à jour sur http://u.s.b.free.fr - Email : [email protected] 20

Les paquets Token doivent se conformer au format suivant,

Figure 10 : Format du paquet Token

b. Les paquets Data

Il y a 2 sortes de paquets de données pour la norme 1.1 ( Data0 et Data1) Le mode High Speed définit 2 autres PIDs de données, DATA2 et MDATA.

o La taille maximale de données " données utiles " pour les périphériques Low Speed vitesse est de 8 octets.

o La taille maximale de données " données utiles " pour les périphériques Full Speed est de 64 octets.

o La taille maximale de données " données utiles " pour les périphériques High Speed est de 1024 octets.

o Les données doivent être envoyées en multiple d'octets.

Les paquets de Data ont le format suivant :

Figure 11 : Format du paquet Data

c. Les paquets « Handshake »

Il y a 3 sortes de paquets Handshake qui font simplement partie du PID.

o ACK - validant que le paquet a été reçu correctement.

PID ADDR ENDP CRC

8 bits 7 bits 4 bits 3 bits

IN OUT SETUP

PID DATA CRC16

8 bits 0-1023 bytes 16 bits

DATA0 DATA1

�gure 8.15: Champ du paquet DATA

118

Page 127: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.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 paquetsSYNC : 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 Identi�cateur. Un PID consiste en 4 bits suivis des compléments à un de ces 4 bitsa�n d'e�ectuer une véri�cation de ce PID. Le PID indique le type du paquet, son format etle type d'erreur de détection appliquée au paquet. Si la véri�cation du PID a échouée ou s'iln'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 adresseunique. Les périphériques répondent à l'adresse 0 lorsqu'ils viennent d'être connectés sur lebus. Ensuite, c'est l'hôte qui assigne une adresse unique à chacun. Sa longueur de 7 bits luipermet 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 a�n de connaîtrel'ensemble des adresses pour pouvoir attribuer une nouvelle adresse au nouveau périphériquequi, en retour, s'identi�e).

FRAME : le champ de trame permet d'identi�er le numéro de la trame dans laquelle les paquetssont 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 jetonSOF.

DATA : Le champ données peut aller de 0 à 1024 bits(128 octets). 8 octets en low speed, 1023 enfull speed, 1024 en high speed.

ENDP : un ajout de 4 bits d'ENDP permet un adressage des fonctions plus �exible (dans le casoù 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ériqueslents supportent au maximum 2 adresses de points d'arrêt (terminaisons) par fonction. Lespériphériques �Full Speed� acceptent jusqu'à 16 points d'arrêt (codage sur 4 bits).

CRC : Véri�cation de la redondance des cycles. Ce champ est utilisé pour véri�er l'intégrité desdonnées des paquets. Le PID n'est pas inclus dans la véri�cation. Tous les CRC sont générésavant l'insertion des bits de bourrage et sont décodés par les récepteurs après avoir enlevé cesbits de bourrage. Un CRC défectueux indique que un ou plusieurs des champs protégés est

119

Page 128: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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) = X5 + X2 + 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) = X16 + X15 + X2 + 1. Si tous les bits de données et deCRC sont reçus sans erreur, le CRC est 1000000000001101.

groupe valeur PID type de paquet0001 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 : con�guration, début des transferts commande0011 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 max0010 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 d�erreur ne sefait 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ôleurpeut réinitialiser jusqu�à 3 fois de manière hardware la liaison avec un autre élément avant d�enavertir 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

Page 129: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.4. Types de transferts (terminaisons)

champ type d'erreur action requisePID véri�cation du PID erronée, pb de bit stu�ng paquet ignoré

ADDR CRC d'adresse incorrect, pb de bit stu�ng jeton ignoréFRAME Number CRC de frame incorrect, pb de bit stu�ng champ frame ignoré

DATA CRC de données incorrect, pb de bit stu�ng données ignorées

tableau 8.2: Erreur des paquets USB

8.4 Types de transferts (terminaisons)

8.4.1 Control Transfers

Il est constitué de plusieurs étapes. Chaque étape (ou transaction) est composée de 3 paquets(TDH : Token, Data, Handshake). Il est utilisé principalement pour les opérations d'initialisationset de con�gurations.

� l'étape d'installation :

ACQUIER Bernard CHAP 4 Page 1/8 14/06/02

Document traduit du site Beyond Logic Chapitre 4

L'USB en bref

Donner un sens au standard USB

Les types de terminaisons. La spécification du Bus Série Universel définit 4 types de transferts ou de terminaisons,

• Transferts de commande • Transferts d'interruption • Transferts Isochrone • Transferts en Bloc (BULK) • Gestion de la bande passante.

Transferts de commande

Les Transferts de commande sont régulièrement utilisés pour les opérations de commande et d'état. Ils sont essentiels pour installer un appareil USB avec toutes les fonctions d'énumération qui seront exécutés en utilisant les Transferts de commande. Il surviennent généralement en paquets directs et par rafales qui sont initiés par l'hôte et utilisent le meilleur rendement de livraison. La longueur du paquet du Transfert de commande pour appareil basse vitesse doit être de 8 octets, les appareils pleine vitesse autorise une taille de paquet de 8, 16, 32 ou 64 octets et les appareils haute vitesse doivent avoir une taille de paquet de 64 octets.

Un Transfert de commande peut avoir plus de 3 étapes.

• L'étape d'installation se passe lorsqu'une demande est envoyée. Elle est composée de 3 paquets. Le jeton (token) d'installation envoyé le premier est celui qui contient l'adresse et le numéro de la terminaison. Le paquet de données est envoyé aprés et a toujours un type PID de Data0 et inclut un paquet d'installation qui détaille le type de la demande. Nous détaillerons le paquet d'installation plus tard. Le dernier paquet est une poignée de mains utilisé pour valider la bonne réception ou pour indiquer une erreur. Si la fonction reçoit correctement la donnée d'installation ( CRC et PID etc...Ok) elle répond avec ACK, sinon elle ignore la donnée et n'envoie pas un paquet de poignée de mains. Les fonctions ne peuvent pas émettre un paquet STALL ou NAK en réponse à un paquet d'installation.

L'étape de donées facultative consiste en un ou plusieurs transferts IN (Entrée) ou OUT (sorties). La demande d'installation indique la quantité de données qui doit être envoyée dans cette étape. Si elle dépasse la taille maximale du paquet, les données seront envoyées en plusieurs transferts, chacune ayant la longueur maximale du paquet à l'exception du dernier paquet.

L'étape de données comporte 2 scénarios différents selon la direction du transfert de données.

�gure 8.17: Transfert de commande : transaction d'installation

� l'étape de données (facultative) :

121

Page 130: Cours d'Informatique Industrielle

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

ACQUIER Bernard CHAP 4 Page 2/8 14/06/02

o IN (Entrée): Quand l'hôte est prêt à recevoir les données de commande, il émet un jeton (token) IN. Si la fonction reçoit le jeton IN avec une erreur, c'est à dire que le PID ne correspond pas avec les bits inversés du PID, il ignore donc le paquet. Si le jeton est reçu correctement, l'appareil peut soit répondre avec un paquet de données contenant les données de commande à envoyer, soit un paquet "d'arrêt" signalant que la terminaison a eu une erreur soit un pacquet NAK signalant à l'hôte que la terminaison fonctionne, mais provisoirement n'a pas de données à envoyer.

o OUT (Sortie): Quand l'hôte a besoin d'envoyer à l'appareil un paquet de données de commande, il emet un jeton OUT suivi par un paquet de données contenant les données de commande comme "charge utile" (payload). Si une partie du jeton OUT ou du paquet de données est altéré alors la fonction ignore le pacquet. Si le buffer de terminaison de la fonction était vide et qu'il a cadencé les données dans le buffer de terminaison, il produit un ACK avisant l'hôte qu'il a bien reçu les données. Si le buffer de terminaison n'est pas vide à cause du traitement du paquet précédent, alors la fonction retourne un NAK. Toutefois si la terminaison comporte une erreur et que son bit "halt" ai été positionné, elle retourne un STALL (Bloqué).

• L'étape d'état rend compte des états de l'ensemble de demandes et cette fois encore change selon la direction du transfert. Le rapport d'état est toujours réalisé par la fonction.

IN (Entrée): Si l'hôte envoie un (ou des) jeton(s) IN pendant l'étape de données pour recevoir des données, alors l'hôte doit valider la bonne réception de ces données. Ceci est réalisé par l'hôte qui envoie un jeton OUT suivi par un apquet de données de longueur nul. La fonction peut maintenant rendre compte de son état dans l'étape poignée de mains. Un ACK indique que la fonction a achevé la commande et qu'elle est maintenant prête à accepter une autre commande. Si une erreur s'est produite pendant l'exécution de cette commande, alors la fonction émettra un STALL (Bloqué). Toutefois si la fonction continue l'exécution, elle retourne un NAK indiquant à l'hôte la nécessité de répéter l'étape d'état ultérieurement.

�gure 8.18: Transfert de commande : transaction dde données (facultatif)

� l'étape d'état :

ACQUIER Bernard CHAP 4 Page 3/8 14/06/02

o OUT (Sortie):Si l'hôte envoie un (ou des) jeton(s) OUT pendant l'étape de données pour transmettre des données, la fonction validera la bonne réception des 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 si la fonction était encore occupé à traiter les données, cela déboucherait sur un NAK demandant à l'hôte de retenter l'étape d'état ultérieurement.

Transferts de Commande: Le coeur du problème.

Maintenant, voyons comment tout cela s'accorde? Supposons par exemple que l'hôte veuille demander un descripteur d'appareil pendant l'énumération. Les paquets qui sont envoyés sont les suivants:

L'hôte enverra un jeton d'installation disant à la fonction que le paquet suivant est un paquet d'installation. Le champ adresse fixera l'adresse de l'appareil à qui l'hôte a demandé le descripteur. Le numéro de la terminaison devrait être un zéro, indiquant une ligne défectueuse. L'hôte enverra alors un paquet DATA0. Celui-ci aura 8 octets de "charge utile" (payload) correspondant à la Demande de Descripteur d'Appareil comme souligné au chapitre 9 de la spécification USB. La fonction USB annoncera alors que le paquet d'installation a été lu correctement et sans aucune erreur. Si le paquet était reçu altéré, l'appareil ignorerait tout simplement ce paquet. L'hôte renverra alors le paquet après un court délai.

1. Jeton d'installation Sync PID ADDR ENDP CRC5 EOP Adresse & N° de

terminaison

2.Paquet DATA0 Sync PID Data0 CRC16 EOP Demande de Descripteur d'Appareil

3. Poignée de mains ACK Sync PID EOP L'appareil valide le paquet

d'installation

Les 3 paquets ci-dessus représentent la première transaction USB. L'appareil USB décodera maintenant les 8 octets reçus, et déterminera que c'était une demande de Descripteur d'Appareil. L'Appareil tentera d'envoyer le Descripteur d'Appareil, qui sera la transaction USB suivante.

ACQUIER Bernard CHAP 4 Page 3/8 14/06/02

o OUT (Sortie):Si l'hôte envoie un (ou des) jeton(s) OUT pendant l'étape de données pour transmettre des données, la fonction validera la bonne réception des 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 si la fonction était encore occupé à traiter les données, cela déboucherait sur un NAK demandant à l'hôte de retenter l'étape d'état ultérieurement.

Transferts de Commande: Le coeur du problème.

Maintenant, voyons comment tout cela s'accorde? Supposons par exemple que l'hôte veuille demander un descripteur d'appareil pendant l'énumération. Les paquets qui sont envoyés sont les suivants:

L'hôte enverra un jeton d'installation disant à la fonction que le paquet suivant est un paquet d'installation. Le champ adresse fixera l'adresse de l'appareil à qui l'hôte a demandé le descripteur. Le numéro de la terminaison devrait être un zéro, indiquant une ligne défectueuse. L'hôte enverra alors un paquet DATA0. Celui-ci aura 8 octets de "charge utile" (payload) correspondant à la Demande de Descripteur d'Appareil comme souligné au chapitre 9 de la spécification USB. La fonction USB annoncera alors que le paquet d'installation a été lu correctement et sans aucune erreur. Si le paquet était reçu altéré, l'appareil ignorerait tout simplement ce paquet. L'hôte renverra alors le paquet après un court délai.

1. Jeton d'installation Sync PID ADDR ENDP CRC5 EOP Adresse & N° de

terminaison

2.Paquet DATA0 Sync PID Data0 CRC16 EOP Demande de Descripteur d'Appareil

3. Poignée de mains ACK Sync PID EOP L'appareil valide le paquet

d'installation

Les 3 paquets ci-dessus représentent la première transaction USB. L'appareil USB décodera maintenant les 8 octets reçus, et déterminera que c'était une demande de Descripteur d'Appareil. L'Appareil tentera d'envoyer le Descripteur d'Appareil, qui sera la transaction USB suivante.

�gure 8.19: Transfert de commande : transaction d'état

Caractéristiques :� Message Stream.� Con�guration, status, set up des périphériques.� taille des paquets : 8, 16, 32, 64 octets (�Full Speed�) et 8 octets (�Low Speed�).� Protocole overhead : 45 octets

122

Page 131: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.4. Types de transferts (terminaisons)

Le caractère Plug and Play est assuré par une phase de reconnaissance et de con�guration auto-matique des périphériques connectés au bus. En fait, le host détecte tout périphérique nouvellementbranché, l'interroge à l'aide de transferts de contrôle pour connaître ses caractéristiques et choisit enconséquence le driver adéquat pour le contrôler. De même, toute déconnection est automatiquementdétectée (en hard) par le hub concerné qui le signale alors au host a�n que celuici en tienne compte.

8.4.2 Bulk Data Transfers

ACQUIER Bernard CHAP 4 Page 7/8 14/06/02

Transferts en Bloc

Les Transferts en Bloc peuvent être utilisés pour de grandes quantités de données sporadiques. De tels exemples pourraient inclure un travail d'impression envoyé à une imprimante ou une image provenant d'un scanner. Les Transferts en Bloc se prémunissent de correction d'erreurs 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 assure la transmission et la réception de données de manière infaillible.

Les Transferts en Bloc utiliseront une bande passante de réserve non attribuée sur le Bus après que toutes les autres transactions aient été allouées. Si le Bus est occupé avec de l'Isochrone et/ou de l'interruption, les données en bloc peuvent alors s'écouler doucement sur le Bus. En conséquence, les transferts en bloc devraient seulement être utilisés pour des communications insensibles au temps du fait de la non garantie du temps d'attente.

Les 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. Pour des terminaisons pleine vitesse, la longueur maximale du paquet en Bloc est soit 8, 16, 32 ou 64 octets. Pour des terminaisons 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, elle n'a pas besoin d'être remplie avec des zéros. Un transfert en Bloc est considéré comme complet quand il a transféré la quantité exacte de données demandées, ou un paquet inférieur à la taille maximale de la terminaison, ou un paquet de longueur zéro.

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

�gure 8.20: Transfert en vrac

Caractéristiques :� Pipe Stream.� Paquets en rafale de données (ex : Scanners, imprimantes).� 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

Page 132: Cours d'Informatique Industrielle

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

8.4.3 Interrupts Transfers

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

Transferts d'Interruption

Celui qui eu une expérience de demandes d'interruption sur microcontrôleurs saura que les interruptions sont générées par l'appareil. Toutefois sous USB, si un appareil demande l'attention de l'hôte, il doit attendre que l'hôte l'interroge avant de signaler qu'il a besoin d'une attention urgente!

Transferts d'Interruption

• Temps de retard (ou Latence)garanti • Ligne de flux - Unidirectionnel • Détection d'erreur et nouvel essai sur période suivante

Les transferts d'interruptions sont communément non périodiques, les petits appareils qui ont "initié" la communication ont besoin de temps de retard limité.

• La taille maximale de "charge utile" (payload) pour des appareils basse vitesse est de 8 octets

• La taille maximale de "charge utile" (payload) pour des appareils pleine vitesse est de 64 octets

• La taille maximale de "charge utile" (payload)pour des appareils haute vitesse est de 1024 octets

Le diagramme ci-dessus montre le format d'une transaction d'interruption d'entrée IN et d'interruption de sortie OUT.

IN: L'hôte interrogera périodiquement la terminaison d'interruption. Le taux d'interrogation est spécifié dans le descripteur de terminaison qui sera examiné plus tard. Chaque interrogation obligera l'hôte à envoyer un jeton IN. Si le jeton IN est altéré, la fonction ignore le paquet et continue la surveillance du Bus pour de nouveaux jetons.

Si une interruption a été mise en attente par l'appareil, la fonction enverra un paquet Data contenant des données ayant rapport à l'interruption quand il recevra le jeton IN. Sur des réceptions au niveau de l'hôte, celui-ci retournera un ACK. Toutefois si les données sont altérées, l'hôte ne mentionnera aucun état. Si, d'autre part, une condition d'interruption n'était pas

�gure 8.21: Transfert par interruption

Caractéristiques :� Pipe Stream.� Message court (petite quantité de données) émis de temps en temps (pas de réelles interrup-

tions, plutôt un polling fréquent).� Taille des paquets : < 64 octets (�Full Speed�) et < 8 octets (�Low Speed�).� Transmission en �Best E�ort�.� Protocole overhead : 13 octets.

8.4.4 Isochronous Transfers

IN

OUT DATAx

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

Page 133: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.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 lesressources qu'il requiert ne sont pas disponibles.

Type Transfert Control Isochronous Interrupt BulkMode 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 ouiBande réservée 10% de la trame 90% de la trame non

�best e�ort� �guaranteed� �good e�ort�

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

8.5 Enumération et Descripteurs USB8.5.1 EnumérationDé�nition 8.1 (énumération). Le terme �énumération� désigne un processus USB par lequel lesystème identi�e et con�gure le périphérique en lui donnant une adresse unique. C'est une gestiondynamique 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'identi�catione�ectuée par l'hôte qu'on appelle énumération. Lors de cette phase, le périphérique fournit à l'hôteune suite de descripteurs qui permettent son identi�cation complète. Lors de cette phase d'énumé-ration, on assigne une adresse unique (Unique ID) au périphérique, on charge le driver correspondantet on positionne le composant dans la con�guration 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 sontinitialisés de proche en proche. Ainsi le HUB racine signale qu'il possède des périphériques noninitialisése sur ses ports A et B. L'hôte initialise alors une liaison occupée et la place dans sa listede scrutation, puis passe à la liaison suivante. Puis c'est au tour du deuxième HUB. L'hôte va doncinitialiser successivement les liaisons occupées et va les placer dans sa liste de scrutation. Puis onpassera 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 DescripteursDé�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 typecommande (Control transfert). Il va de soi que tout composant USB doit pouvoir être capable desupporter ce type de transfert. ■

Il existe sur le marché de nombreux périphériques USB. Il a fallu, lors de la création de lanorme USB , trouver un dispositif pour reconnaître chaque composant USB. Cela était indispensablepuisque l'USB devait être un dispositif plug & play. Lors du branchement du périphérique, le �host�

125

Page 134: Cours d'Informatique Industrielle

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

doit reconnaître tous les périphériques qui lui sont branché. Le processus d'énumération se faitgrâce aux descripteurs qui sont rassemblés dans un �chier texte qui est ensuite programmé dans lesystème USB. Lorsque l'on connecte ou déconnecte un périphérique, celui ci fournit à l'hôte toutesles informations nécessaires à son identi�cation, c'est à dire ses descripteurs. Ils sont très utiles pourl'hôte puisqu'il peut, de ce fait, connaître les caractéristiques complètes du périphérique comme parexemple la puissance utile, le type de périphérique, le dispositif de transfert des données, le modulede gestion, . . . etc.

Généralement, dans la plupart des périphériques, toutes ces informations sont stockées dans laROM des composants, et lors de l'énumération, le périphérique envoie simplement ce �chier pourse faire connaître.

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

1. Device descriptor (descripteur d'appareils)2. Con�guration descriptor (descripteur de con�guration)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 Quali�er descriptor (idem Device pour Full & High speed)� Other Speed Con�guration descriptor (Full & High speed)� Interface Power descriptor (gestion d'énergie, USB 2)

126

Page 135: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 178.6. Sur votre PC. . .

8.6 Sur votre PC. . .

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

127

Page 136: Cours d'Informatique Industrielle

Chapitre 9

IEEE-1394

Sommaire9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.3 Fonctionnement du bus FireWire . . . . . . . . . . . . . . . . . . . . . . . 1319.4 Un protocole, trois couches . . . . . . . . . . . . . . . . . . . . . . . . . . 1339.5 Une couche physique optimisée . . . . . . . . . . . . . . . . . . . . . . . . 1359.6 Un arbitrage e�cace et juste . . . . . . . . . . . . . . . . . . . . . . . . . 1359.7 Plug and Play et Hot Plugging ? . . . . . . . . . . . . . . . . . . . . . . . 1369.8 IEEE 1394 b, des améliorations . . . . . . . . . . . . . . . . . . . . . . . . 1369.9 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

9.1 IntroductionLe 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 gestionbus 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 del�alimentation sont supprimés).

� DigitalLink, ou i-Link (Sony Corporation) : produits Digital Handycam

9.1.2 Avantages de L'IEEE 1394On 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

Page 137: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 179.2. Architecture

� Topologie �exible : support du Daisy Chaining (�marguerite�).� Garantie de bande passante pour tous les périphériques raccordés.

9.1.3 UtilisationGrâce à ses performances, l�IEEE-1394 est destinée particulièrement à relier :� Les ordinateurs.� Les produits manipulant de l�audio, des images et de la vidéo.� Les imprimantes et les scanners.� Les disques durs.� Les caméscopes (connecteurs 1394a 2000 appelés mini DV).

SLLA067

20 Comparing Bus Solutions

Applicability and Typical Application for IEEE 1394

The transmission of data without burdening the host unit creates a huge market for IEEE1394.Not only does the computer-based equipment in private households require an interface solutionfor the home and home office network, but also the evolving markets of digital broadcasts,interactive services, games, and home shopping requires a high speed network. Theintroduction of digital set top boxes, which enable the reception of these services, enables thecapability to transmit digital data not only to consumer devices like digital TV, but also to PC andstorage media. Beside the consumer, PC, and PC peripheral markets, many industrialapplications can be covered by IEEE1394.

Figure 11. Possible Interconnections Using 1394 as Interface�gure 9.1: Topologie physique de l'IEEE 1394

D�une topologie très proche de celle de l�USB, le FireWire se démarque par sa bande passantebien supérieure. Il ne nécessite pas de HUBs FireWire (en plus de l�utilisation d�une transmissionisochrone, le FireWire supporte le transport de deux �ux vidéo temps réel avec une qualité broadcasten simultanée) et possède également des ports pour une utilisation interne.

9.2 Architecture9.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, l�USB2 propose des caractéristiques attrayantes mais est destiné à un marchéun peu di�érent. Dans sa nouvelle déclinaison, l�IEEE 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 à l�utilisation de �bre optique plastique multimodes). Dans cettecon�guration, 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 d�adressage.

� Compatibilité avec les périphériques IEEE 1394-1995 par un mode bilingue.

129

Page 138: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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). Laversion appelée 1394b �bilingual� (bilingue) garantit la compatibilité avec �l�ancienne� norme IEEE1394-1995.

9.2.3 CâblesDeux 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 a�n que l'arrêt d'un équipement neprovoque pas de coupure sur le réseau. Le support (moins rapide que la �bre optique) o�re desgammes de vitesse amplement su�santes pour les applications du multimedia : 100 Mbit/s (12.5Mo/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 NormeLa 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éci�cation des registres mémoires de chaque n÷ud et des commandes (transactions read,

write et lock) qui permettent d'y accéder.

130

Page 139: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 179.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 enmanuel ou �xée, terminaison obligatoirement en bout de chaîne), avec IEEE 1394, on se retrouve ennon - supervisé (daisy chain hiérarchisé, réseau acyclique, selection des adresse automatiques, pasde 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)con�gure enlanç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 identi�cateur de noeud (c'est-à-dire de périphérique) codé sur

16 bits. Cet identi�cateur est scindé en deux champs : un champ de 10 bits permettant dedésigner le pont (système permettant de relier plusieurs bus entre eux) et un champ de 6 bitsspéci�ant le noeud. Il est donc possible de relier 1023 ponts (soit 210−1), sur chacun desquelsil 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 detransmission de données par paquets qui est organisée comme si c'était un espace mémoireinterconnecté avec plusieurs appareils,

� la communication (un cycle nominal = 125 µ s, soit 8000 cycles/s) se décompose en unesuite de 3 composition de paquets (1 paquet start, des paquets isochrones et des paquetsasynchrones) séparés par des intervalles de temps (arbitration gap) :

131

Page 140: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 9. IEEE-1394

PS -

XXX

.XX.

XX-1

1

Philips Semiconductors

1394 Bus Cycles

0

Cyc

le S

tart

Cyc

le S

tart

Pack

etPa

cket IsochronousIsochronous

PacketsPacketsAsynchronous Asynchronous

PacketsPackets

TimeArbitration

Gaps

Cyc

le S

tart

Cyc

le S

tart

Pack

etPa

cket

�gure 9.4: Cycle nominal du bus IEEE 1394

� la trame standard est un cycle dont chaque paquet (isochrone ou asynchrone) est séparé parun 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, con�guration, 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

Page 141: Cours d'Informatique Industrielle

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

� séquence émission : ARBitrage / Pre�xe-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éci�e trois couches :

1. couche physique (couche 1 OSI)2. couche liaison (couche 2 OSI)3. couche transaction (couche 3 OSI). Cette couche fait o�ce d'interface entre la couche appli-

cation et la couche liaison pour le mode asynchrone.

©1998 Zayante, Inc. Michael Johas Teener/1394 Technical Summary Slide 12Permission to copy granted as long as this notification is retained, some text and figures based on 5/96 1394 Technical Summary from Apple Computer

IEEE 1394 protocol StackIEEE 1394 protocol Stack

Link LayerPacket Transmitter Packet ReceiverCycle Control

Transaction Layer

Physical Layer

Encode/Decode Arbitration Media Interface

Ser

ial B

us

Man

agem

ent

Read, Write, Lock

Packets

Symbols

Electrical Signals

& Mechanical Interface

Isochronous

Channels

Configuration &

Error Control

Hardware

Firmware

�gure 9.7: Architecture en couche

La couche physique doit gérer le signal de mise sous tension à distance, la reconnaissance dusignal de sélection de l'appareil, le signal d'initialisation du bus et la réception / émission desdonné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 signi�e que l'hôte envoie un paquet de données et attendde 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 boutd'un temps d'attente. Ce temps de latence ne peut pas être quanti�é car il dépend de tauxd�utilisation du bus par d�autres transmissions pour d�autres appareils communicants entreeux.

133

Page 142: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 9. IEEE-1394

�gure 9.8: Transaction asynchrone)

2. Mode isochrone : Le mode de transfert isochrone permet l'envoi de paquets de données detaille �xe à intervalle de temps régulier (cadencé grâce aux deux �ls d'horloge). De cette façonaucun accusé de réception n'est nécessaire, on a donc un débit �xe et donc une bande passantegarantie. De plus, étant donné qu'aucun accusé de réception n'est nécessaire, l'adressage despériphériques est simpli�é et la bande passante économisée permet de gagner en vitesse detransfert. Les communications isochrones sont prioritaires aux asynchrones (de sorte que labande passante est assurée). La communication isochrone entre deux appareils ou plus estassimilable à un canal (�PIPE�). Une fois un canal établit, l�appareil demandeur est garantid�avoir �l'espace-temps� demandé à chaque cycle (données vidéo ou autres besoins �tempsré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 deparole au cours de la phase d'arbitrage qui précède systématiquement tout échange de données encadenç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 pro�ls, selon leursperformances. 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

Page 143: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 179.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 signalde selection de l�appareil, le signal d�initialisation du bus et la réception/émission des données. Lessignaux 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'utilisationde deux paires pour transporter les données. En e�et, en plus d'un signal data classique (RxD enré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 adonc 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 vitessesatteintes.

9.6 Un arbitrage e�cace et juste

La phase d'arbitrage permet de gérer l'accès au support. Chaque n÷ud qui souhaite envoyerdes données demande obligatoirement l'autorisation d'émettre à la racine. La topologie crée doncune 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 asynchronesqui ont demandé la parole l'ont prise une fois. Chaque n÷ud a donc une possibilité d'accèspendant cet intervalle.

2. cycle master : (mode isochrone) : la racine déclenche le début de cycle isochrone à l'aide d'unpaquet asynchrone particulier (le cycle start) qui est le plus prioritaire puisque généré par laracine.Chaque n÷ud isochrone qui prend alors la parole a pris soin au préalable de se réserverune 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 signauxde 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 parun intervalle de temps d'attente (subaction gap, acknowledge gap, isochronous gap) pendant lequelle bus doit être libre. Avant d'envoyer sa demande d'autorisation de prise de parole à la racine, unn÷ud doit détecter un de ces intervalles. Le subaction gap est plus large que l'acknowledge gap oul'isochronous gap. Ceci garantit que le transfert asynchrone ne vient jamais perturber le transfertisochrone 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 logiquepré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 observentl'état résultant des lignes et en déduisent le leur (par exemple : �je peux parler� ou �je ne peux pasparler�).

135

Page 144: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17Chapitre 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 con�guration, le réseau se (re)con�gure 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 (identi�cation au sein d'une topologie en arbre),3. la phase de self identity (identi�cation 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 à identi�erleur 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'aidede 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, di�usent les débits qu'ilssupportent, proposent éventuellement leur candidature à tel ou tel rôle de manager. A l'issue decette 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 modi�cation précé-

dente,� Priority arbitration : pipelining → le premier demandeur est le maître.

136

Page 145: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 179.9. Annexes

9.9 Annexes

�gure 9.11: Split transaction

�gure 9.12: Concatenation transaction

�gure 9.13: Uni�ed transaction

137

Page 146: Cours d'Informatique Industrielle

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 plusré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 parl'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éesde compteurs (timers), de circuits convertisseurs o�rant des entrées et des sorties analogiques etdes circuits à base de portes logiques o�rant 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édiaired'un programme.

138

Page 147: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.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 mesure10.2.1 Les Capteurs

Les capteurs sont un des éléments de �n de chaîne d'acquisition de données. Ils sont sensiblesaux phénomènes physiques ou chimiques. Leur rôle consiste à produire un signal électrique, leplus souvent une tension analogique, mais aussi parfois une intensité, une fréquence ou une sériede pulsations. Ces signaux sont liés au milieu dans lequel ils sont placés ou au phénomène qu'ilsdoivent détecter. Leurs caractéristiques importantes sont le domaine d'utilisation, la sélectivité, lasensibilité, 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 dusaux parasites lors de la transmission de leurs signaux, non-linéarité de la réponse...

10.2.2 Le conditionnement du signalLes 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 - 10volts, avec une résistance de quelques centaines de kW . Souvent, il faudra :

� Ampli�er 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 éventuellementsymétrique, pour diminuer l'importance relative des tensions parasites ajoutées le long des câblesde liaison. C'est un autre rôle du conditionnement du signal.

139

Page 148: Cours d'Informatique Industrielle

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

Nous engloberons aussi sous ce terme les techniques nécessaires pour isoler électriquement etampli�er les tensions disponibles cette fois en sortie, de manière à les rendre aptes à commanderles actionneurs des processus externes comme le déclenchement d'un chau�age, le lancement d'unmoteur ou l'ouverture d'une électrovanne.

10.2.3 Le multiplexageLe 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 quis'écoule entre deux mesures sur un même canal.

Le multiplexage peut consister simplement en une commutation sur l'une ou l'autre voie parl'intermédiaire de relais électromagnétiques pilotés par le PC lui-même, mais beaucoup de dispositifsde 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 plusieursvoies, 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 e�ectué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 obtenupar divers systèmes de communication, les plus répandus étant la liaison RS 232 ou le système de busIEEE 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 dansles PC, mais par contre les liaisons IEEE doivent être e�ectuées à travers d'une carte d'interfaceajouté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'unecarte 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 unetrè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 TraitementLe 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 sil'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 formeet transformées en valeurs numériques, éventuellement traitées de manière élémentaire. Le logicielpeut 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 e�ectuer 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

Page 149: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.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, deplus elles mobilisent l'utilisation du processeur. C'est pourquoi les cartes d'acquisition sont muniesd'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�. Ladurée de décomptage maximale avec un compteur 16 bits et un quartz de 4 MHz (Fréquencede travail) vaut : durée= 216

4 106 ≈ 16.4ms. Avec 2 timers en cascade→ durée de décompte plusimportante.

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/SUne 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 con�its d'adresses.La détermination de ces adresses se fait à partir de l'adresse de base (adresse de référence) de lacarte E/S.

10.4 Etude sommaire d'une carte d'acquisition10.4.1 Introduction

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

141

Page 150: Cours d'Informatique Industrielle

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

10.4.2 DescriptionLa 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 7537Il 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 deuxconvertisseurs dans son boîtier (voir �gure 10.4). Par conséquent, l'utilisateur dispose de deux sortiesanalogiques 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'unCNA 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

Page 151: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.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 registre12 bits (DAC A ou DAC B register) que si on agit sur la broche (19) UPD du convertisseur. Unsignal logique 0 sur cette broche transfère simultanément les données des registres d'entrée vers lesregistres 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 (UPD ) 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) :

Vsortie = VrefNb

2N − 1

L'erreur de quanti�cation est donnée par le LSB :

Vmin = 101

212 − 1= 2, 44mV

5 adresses sont su�santes 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 UPD.Les 2 registres d'entrée ne sont validés qu'en écriture et UPD 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 quiimportent !

DA1L=ADR1+4 D7 D6 D5 D4 D3 D2 D1 D0 W8 LSb (DAC A LS Input)

DA1H=ADR1+5 • • • • D11 D10 D9 D8 W4 MSb (DAC A MS Input)

CONVDA=ADR1+7 Lancement de la Conversion R

tableau 10.1: registres du CNA (MX 7537)

143

Page 152: Cours d'Informatique Industrielle

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

10.4.2.2 Le Convertisseur Analogique Numérique AD574Il 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 sonboîtier. AD574A

REV. B–4–

ORDERING GUIDE

Resolution MaxTemperature Linearity Error No Missing Codes Full Scale

Model1 Range Max (TMIN to TMAX) (TMIN to TMAX) T.C. (ppm/°C)

AD574AJ(X) 0°C to +70°C ±1 LSB 11 Bits 50.0AD574AK(X) 0°C to +70°C ±1/2 LSB 12 Bits 27.0AD574AL(X) 0°C to +70°C ±1/2 LSB 12 Bits 10.0AD574AS(X)2 –55°C to +125°C ±1 LSB 11 Bits 50.0AD574AT(X)2 –55°C to +125°C ±1 LSB 12 Bits 25.0AD574AU(X)2 –55°C to +125°C ±1 LSB 12 Bits 12.5

NOTES1X = Package designator. Available packages are: D (D-28) for all grades. E (E-28A) for J and K grades and /883B processed S, Tand U grades. N (N-28) for J, K, and L grades. P (P-28A) for PLCC in J, K grades. Example: AD574AKN is K grade in plastic DIP.

2For details on grade and package offerings screened in accordance with MIL-STD-883, refer to Analog Devices Military ProductsDatabook.

1

14

28

15

2

3

4

5

6

7

8

9

10

11

12

13

27

26

25

24

23

22

21

20

19

18

17

16

CONTROL

CLOCK SAR

3

STATE

OUTPUT

BUFFERS

MSB

NIBBLE

NIBBLE

NIBBLE

LSB

10VREF

12

12

C

B

A

12

AD574A

3k

19.95k

9.95k

5k

5k

NDAC VEE

8kIREF

COMP

DIGITAL COMMONDC

IDAC

IDAC =4 x N x IREF

+5V SUPPLYVLOGIC

DATA MODE SELECT12/8

STATUSSTSDB11MSB

DB10

DB9

DB8

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0LSB

DIGITALDATAOUTPUTS

CHIP SELECTCS

BYTE ADDRESS/SHORT CYCLE

AOREAD/CONVERT

R/CCHIP ENABLE

CE+12/+15V SUPPLY

VCC

+10V REFERENCEREF OUT

ANALOG COMMONAC

REFERENCE INPUTREF IN

-12/-15V SUPPLYVEE

BIPOLAR OFFSETBIP OFF

10V SPAN INPUT10VIN

20V SPAN INPUT20VIN

AD574A Block Diagram and Pin Configuration

ABSOLUTE MAXIMUM RATINGS*(Specifications apply to all grades, except where noted)

VCC to Digital Common . . . . . . . . . . . . . . . . . . 0 V to +16.5 VVEE to Digital Common . . . . . . . . . . . . . . . . . . . 0 V to –16.5 VVLOGIC to Digital Common . . . . . . . . . . . . . . . . . . 0 V to +7 VAnalog Common to Digital Common . . . . . . . . . . . . . . . ±1 VControl Inputs (CE, CS, AO 12/8, R/C) to

Digital Common . . . . . . . . . . . . . . –0.5 V to VLOGIC + 0.5 VAnalog Inputs (REF IN, BIP OFF, 10 VIN) to

Analog Common . . . . . . . . . . . . . . . . . . . . . . . . .VEE to VCC

20 VIN to Analog Common . . . . . . . . . . . . . . . . . . . . . . ±24 VREF OUT . . . . . . . . . . . . . . . . . . Indefinite Short to Common

Momentary Short to VCC

Chip Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175°CPower Dissipation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 mWLead Temperature (Soldering, 10 sec). . . . . . . . . . . . . +300°CStorage Temperature (Ceramic) . . . . . . . . . . –65°C to +150°C

(Plastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . –25°C to +100°C*Stresses above those listed under “Absolute Maximum Ratings” may causepermanent damage to the device. This is a stress rating only and functionaloperation of the device at these or any other conditions above those indicated in theoperational sections of this specification is not implied. Exposure to absolutemaximum rating conditions for extended periods may affect device reliability.

�gure 10.6: Le CAN AD574

La conversion analogique numérique se fera en trois étapes :1. déclenchement de la conversion par une opération de lecture d'un registre (situé à l'adresse

adconv).2. attente de la �n de conversion (≈ 25µs). L'indicateur de �n de conversion est le bit busy du

registre situé à l'adresse adh. Tant que la conversion en cours, busy reste à l'état logique haut.3. lecture du résultat en 2 fois. On utilisera 2 registres (accessibles uniquement en lecture) aux

adresses adh et adl.

144

Page 153: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.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 conversionest en cours, le boîtier le signale par le bit d'état busy à l'état haut. L'attente de �n de conversionpeut ê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 laconversion 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 adjoindreau CAN un multiplexeur analogique plutôt que de multiplier ce circuit. Ce multiplexeur permet dechoisir par programmation entre �x� voies d'entrées celle qui sera connectée au CAN. Un tel circuit8 voies est utilisé sur la carte étudiée. La voie est choisie par écriture de son numéro dans un registre8 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 modede polarité du CAN, ce qui évite un registre supplémentaire. Le choix du mode de conversion(unipolaire : 0 à Vref Volts ou bipolaire : de −Vref

2 à +Vref

2 ) se fait par une simple action d'un signallogique, ce qui consiste en une écriture dans le registre situé à l'adresse mux . Si pol = 0, alors lemode choisit est bipolaire sinon il est unipolaire.

ADL = ADR1+5 D7 D6 D5 D4 D3 D2 D1 D0 R8 LSb (CAN)

ADH = ADR1+4 BUSY • • • D11 D10 D9 D8 Rbusy+4 MSb (CAN)

ADCONV = ADR1+6 Lancement de la Conversion RMUX = 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 registred'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 desregistres 8 bits.

145

Page 154: Cours d'Informatique Industrielle

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

October 1994 Order Number: 231244-006

82C54CHMOS PROGRAMMABLE INTERVAL TIMER

Y Compatible with all Intel and mostother microprocessors

Y High Speed, ‘‘Zero Wait State’’Operation with 8 MHz 8086/88 and80186/188

Y Handles Inputs from DCÐ 10 MHz for 82C54-2

Y Available in EXPRESSÐ Standard Temperature RangeÐ Extended Temperature Range

Y Three independent 16-bit counters

Y Low Power CHMOSÐ ICC e 10 mA @ 8 MHz Count

frequency

Y Completely TTL Compatible

Y Six Programmable Counter Modes

Y Binary or BCD counting

Y Status Read Back Command

Y Available in 24-Pin DIP and 28-Pin PLCC

The Intel 82C54 is a high-performance, CHMOS version of the industry standard 8254 counter/timer which isdesigned to solve the timing control problems common in microcomputer system design. It provides threeindependent 16-bit counters, each capable of handling clock inputs up to 10 MHz. All modes are softwareprogrammable. The 82C54 is pin compatible with the HMOS 8254, and is a superset of the 8253.

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.

The 82C54 is fabricated on Intel’s advanced CHMOS III technology which provides low power consumptionwith performance equal to or greater than the equivalent HMOS product. The 82C54 is available in 24-pin DIPand 28-pin plastic leaded chip carrier (PLCC) packages.

Figure 1. 82C54 Block Diagram

231244–3

PLASTIC LEADED CHIP CARRIER

231244–2Diagrams are for pin reference only.

Package sizes are not to scale.

Figure 2. 82C54 Pinout

�gure 10.7: Architecture du timer 8254

10.4.3.1 FonctionnementPour 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ù il seradécrémenté à chaque front descendant de l'horloge. Lorsque le compte est arrivé à 0, soit le compteurattend une nouvelle initialisation (mode dit monocoup), soit il se réinitialise avec le nombre toujoursprésent dans le registre d'entrée et on recommence le décomptage (mode cyclique ou périodique). Onpeut aussi demander un signal de sortie symétrique (signaux carrés) ou impulsionnel. Une tensiond'entrée logique activant �gate� autorise ou non le décompte. L'ensemble des caractéristiques defonctionnement (monocoup, périodique, forme du signal de sortie et rôle de �gate�) dé�nit le modede 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 etc'est celui-ci que l'on interroge alors que le (dé)compteur continue de décrémenter. ■

146

Page 155: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.4. Etude sommaire d'une carte d'acquisition

10.4.3.2 Architecture interneLe 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 2fois : la 1ère écriture se fait dans le LSB et la 2ème dans le MSB (cela est rendu possible parune logique interne).

• Registre de contrôle : on devrait avoir trois registres de contrôle correspondant à chacun des 3compteurs. En réalité, les trois registres sont multiplexés à l'intérieur du boîtier et l'aiguillageest assuré par les deux bits de poids fort de ce registre situé à l'adresse timcw (timer controlword). Avantage : on n'a besoin que d'une seule adresse pour les 3 timers. Les autres bits dumot de contrôle servent à dé�nir le mode de fonctionnement du compteur sélectionné. Pource boîtier, il y a six modes disponibles :Mode 0 : modemonocoup (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). Unfront montant sur la gachette provoque le décompte. Une nouvelle action sur la gachetterelance à partir de la valeur du précompte.

Mode 2 : oscillateur diviseur par N (générateur de tops hard). Le décompte est initié parun front montant sur la gachette. La sortie (initialement à 1) passe à 0 le temps d'unepériode d'horloge lorsque le décompte passe de 1 à 0. Ensuite on recommence jusqu'auprochain → tops à intervalles réguliers.

Mode 3 : générateur de signaux carrés. Identique au mode 2 sauf que la sortie est à 1pendant 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 sortiepasse à 0 pendant une période d'horloge puis on recommence à partir de la valeur dupré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 saufque 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 ou10), il y a une 4ème possibilité : le code 11 (bits D7-D6) qui est la commande de readback. Le8254 possède trois registres 16 bits supplémentaires appelés latchs, mémoires ou tampons. Lacommande readback permet de recevoir des informations du compteur (lecture des comptesou lecture d'un mot d'état). Dans cette commande, on peut soit �latcher� simultanément lecontenu 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�étantl'état de sortie du compteur). Il faut dans ce cas tester le bit output du registre d'état. Lesadresses de ces trois latchs sont celles déjà utilisées pour les registres d'entrée mais cette foisavec 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 comptagedurant une période d'horloge (lire count0 tant que ([count0]&0x80) = 0x80 puis lire count0tant que ([count0]&0x80) = 0).

147

Page 156: Cours d'Informatique Industrielle

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

82C54

If an initial count is written while GATE e 0, it willstill be loaded on the next CLK pulse. When GATEgoes high, OUT will go high N CLK pulses later; noCLK pulse is needed to load the Counter as this hasalready been done.

231244–8

NOTE:The Following Conventions Apply To All Mode TimingDiagrams:1. Counters are programmed for binary (not BCD)counting and for Reading/Writing least significant byte(LSB) only.2. The counter is always selected (CS always low).3. CW stands for ‘‘Control Word’’; CW e 10 means acontrol word of 10, hex is written to the counter.4. LSB stands for ‘‘Least Significant Byte’’ of count.5. Numbers below diagrams are count values.The lower number is the least significant byte.The upper number is the most significant byte. Sincethe counter is programmed to Read/Write LSB only,the most significant byte cannot be read.N stands for an undefined count.Vertical lines show transitions between count values.

Figure 15. Mode 0

MODE 1: HARDWARE RETRIGGERABLEONE-SHOT

OUT will be initially high. OUT will go low on the CLKpulse following a trigger to begin the one-shot pulse,and will remain low until the Counter reaches zero.OUT will then go high and remain high until the CLKpulse after the next trigger.

After writing the Control Word and initial count, theCounter is armed. A trigger results in loading theCounter and setting OUT low on the next CLK pulse,thus starting the one-shot pulse. An initial count of Nwill result in a one-shot pulse N CLK cycles in dura-tion. The one-shot is retriggerable, hence OUT willremain low for N CLK pulses after any trigger. Theone-shot pulse can be repeated without rewriting thesame count into the counter. GATE has no effect onOUT.

If a new count is written to the Counter during a one-shot pulse, the current one-shot is not affected un-less the Counter is retriggered. In that case, theCounter is loaded with the new count and the one-shot pulse continues until the new count expires.

231244–9

Figure 16. Mode 1

10

82C54

If an initial count is written while GATE e 0, it willstill be loaded on the next CLK pulse. When GATEgoes high, OUT will go high N CLK pulses later; noCLK pulse is needed to load the Counter as this hasalready been done.

231244–8

NOTE:The Following Conventions Apply To All Mode TimingDiagrams:1. Counters are programmed for binary (not BCD)counting and for Reading/Writing least significant byte(LSB) only.2. The counter is always selected (CS always low).3. CW stands for ‘‘Control Word’’; CW e 10 means acontrol word of 10, hex is written to the counter.4. LSB stands for ‘‘Least Significant Byte’’ of count.5. Numbers below diagrams are count values.The lower number is the least significant byte.The upper number is the most significant byte. Sincethe counter is programmed to Read/Write LSB only,the most significant byte cannot be read.N stands for an undefined count.Vertical lines show transitions between count values.

Figure 15. Mode 0

MODE 1: HARDWARE RETRIGGERABLEONE-SHOT

OUT will be initially high. OUT will go low on the CLKpulse following a trigger to begin the one-shot pulse,and will remain low until the Counter reaches zero.OUT will then go high and remain high until the CLKpulse after the next trigger.

After writing the Control Word and initial count, theCounter is armed. A trigger results in loading theCounter and setting OUT low on the next CLK pulse,thus starting the one-shot pulse. An initial count of Nwill result in a one-shot pulse N CLK cycles in dura-tion. The one-shot is retriggerable, hence OUT willremain low for N CLK pulses after any trigger. Theone-shot pulse can be repeated without rewriting thesame count into the counter. GATE has no effect onOUT.

If a new count is written to the Counter during a one-shot pulse, the current one-shot is not affected un-less the Counter is retriggered. In that case, theCounter is loaded with the new count and the one-shot pulse continues until the new count expires.

231244–9

Figure 16. Mode 1

10

82C54

MODE 2: RATE GENERATOR

This Mode functions like a divide-by-N counter. It istypicially used to generate a Real Time Clock inter-rupt. OUT will initially be high. When the initial counthas decremented to 1, OUT goes low for one CLKpulse. OUT then goes high again, the Counter re-loads the initial count and the process is repeated.Mode 2 is periodic; the same sequence is repeatedindefinitely. For an initial count of N, the sequencerepeats every N CLK cycles.

GATE e 1 enables counting; GATE e 0 disablescounting. If GATE goes low during an output pulse,OUT is set high immediately. A trigger reloads theCounter with the initial count on the next CLK pulse;OUT goes low N CLK pulses after the trigger. Thusthe GATE input can be used to synchronize theCounter.

After writing a Control Word and initial count, theCounter will be loaded on the next CLK pulse. OUTgoes low N CLK Pulses after the initial count is writ-ten. This allows the Counter to be synchronized bysoftware also.

231244–10

NOTE:A GATE transition should not occur one clock prior toterminal count.

Figure 17. Mode 2

Writing a new count while counting does not affectthe current counting sequence. If a trigger is re-ceived after writing a new count but before the endof the current period, the Counter will be loaded withthe new count on the next CLK pulse and countingwill continue from the new count. Otherwise, thenew count will be loaded at the end of the currentcounting cycle. In mode 2, a COUNT of 1 is illegal.

MODE 3: SQUARE WAVE MODE

Mode 3 is typically used for Baud rate generation.Mode 3 is similar to Mode 2 except for the duty cycleof OUT. OUT will initially be high. When half the ini-tial count has expired, OUT goes low for the remain-der of the count. Mode 3 is periodic; the sequenceabove is repeated indefinitely. An initial count of Nresults in a square wave with a period of N CLKcycles.

GATE e 1 enables counting; GATE e 0 disablescounting. If GATE goes low while OUT is low, OUT isset high immediately; no CLK pulse is required. Atrigger reloads the Counter with the initial count onthe next CLK pulse. Thus the GATE input can beused to synchronize the Counter.

After writing a Control Word and initial count, theCounter will be loaded on the next CLK pulse. Thisallows the Counter to be synchronized by softwarealso.

Writing a new count while counting does not affectthe current counting sequence. If a trigger is re-ceived after writing a new count but before the endof the current half-cycle of the square wave, theCounter will be loaded with the new count on thenext CLK pulse and counting will continue from thenew count. Otherwise, the new count will be loadedat the end of the current half-cycle.

Mode 3 is implemented as follows:

Even counts: OUT is initially high. The initial count isloaded on one CLK pulse and then is decrementedby two on succeeding CLK pulses. When the countexpires OUT changes value and the Counter is re-loaded with the initial count. The above process isrepeated indefinitely.

Odd counts: OUT is initially high. The initial countminus one (an even number) is loaded on one CLKpulse and then is decremented by two on succeed-ing CLK pulses. One CLK pulse after the count ex-pires, OUT goes low and the Counter is reloadedwith the initial count minus one. Succeeding CLKpulses decrement the count by two. When the countexpires, OUT goes high again and the Counter isreloaded with the initial count minus one. The aboveprocess is repeated indefinitely. So for odd counts,

11

�gure 10.9: 8254 : modes 0,1 et 282C54

OUT will be high for (N a 1)/2 counts and low for(N b1)/2 counts.

231244–11

NOTE:A GATE transition should not occur one clock prior toterminal count.

Figure 18. Mode 3

MODE 4: SOFTWARE TRIGGERED STROBE

OUT will be initially high. When the initial count ex-pires, OUT will go low for one CLK pulse and thengo high again. The counting sequence is ‘‘triggered’’by writing the initial count.

GATE e 1 enables counting; GATE e 0 disablescounting. GATE has no effect on OUT.

After writing a Control Word and initial count, theCounter will be loaded on the next CLK pulse. ThisCLK pulse does not decrement the count, so for aninitial count of N, OUT does not strobe low untilN a 1 CLK pulses after the initial count is written.

If a new count is written during counting, it will beloaded on the next CLK pulse and counting will con-tinue from the new count. If a two-byte count is writ-ten, the following happens:

1) Writing the first byte has no effect on counting.

2) Writing the second byte allows the new count tobe loaded on the next CLK pulse.

This allows the sequence to be ‘‘retriggered’’ bysoftware. OUT strobes low Na1 CLK pulses afterthe new count of N is written.

231244–12

Figure 19. Mode 4

MODE 5: HARDWARE TRIGGERED STROBE(RETRIGGERABLE)

OUT will initially be high. Counting is triggered by arising edge of GATE. When the initial count has ex-pired, OUT will go low for one CLK pulse and thengo high again.

12

82C54

OUT will be high for (N a 1)/2 counts and low for(N b1)/2 counts.

231244–11

NOTE:A GATE transition should not occur one clock prior toterminal count.

Figure 18. Mode 3

MODE 4: SOFTWARE TRIGGERED STROBE

OUT will be initially high. When the initial count ex-pires, OUT will go low for one CLK pulse and thengo high again. The counting sequence is ‘‘triggered’’by writing the initial count.

GATE e 1 enables counting; GATE e 0 disablescounting. GATE has no effect on OUT.

After writing a Control Word and initial count, theCounter will be loaded on the next CLK pulse. ThisCLK pulse does not decrement the count, so for aninitial count of N, OUT does not strobe low untilN a 1 CLK pulses after the initial count is written.

If a new count is written during counting, it will beloaded on the next CLK pulse and counting will con-tinue from the new count. If a two-byte count is writ-ten, the following happens:

1) Writing the first byte has no effect on counting.

2) Writing the second byte allows the new count tobe loaded on the next CLK pulse.

This allows the sequence to be ‘‘retriggered’’ bysoftware. OUT strobes low Na1 CLK pulses afterthe new count of N is written.

231244–12

Figure 19. Mode 4

MODE 5: HARDWARE TRIGGERED STROBE(RETRIGGERABLE)

OUT will initially be high. Counting is triggered by arising edge of GATE. When the initial count has ex-pired, OUT will go low for one CLK pulse and thengo high again.

12

82C54

After writing the Control Word and initial count, thecounter will not be loaded until the CLK pulse after atrigger. This CLK pulse does not decrement thecount, so for an initial count of N, OUT does notstrobe low until Na1 CLK pulses after a trigger.

A trigger results in the Counter being loaded with theinitial count on the next CLK pulse. The countingsequence is retriggerable. OUT will not strobe lowfor N a 1 CLK pulses after any trigger. GATE hasno effect on OUT.

If a new count is written during counting, the currentcounting sequence will not be affected. If a triggeroccurs after the new count is written but before thecurrent count expires, the Counter will be loadedwith the new count on the next CLK pulse andcounting will continue from there.

231244–13

Figure 20. Mode 5

Signal Low

Status Or Going Rising High

Modes Low

0 Disables Ð Enables

counting counting

1 Ð 1) Initiates Ð

counting

2) Resets output

after next

clock

2 1) Disables

counting Initiates Enables

2) Sets output counting counting

immediately

high

3 1) Disables

counting Initiates Enables

2) Sets output counting counting

immediately

high

4 Disables Ð Enables

counting counting

5 Ð Initiates Ð

counting

Figure 21. Gate Pin Operations Summary

MODEMIN MAX

COUNT COUNT

0 1 0

1 1 0

2 2 0

3 2 0

4 1 0

NOTE:0 is equivalent to 216 for binary counting and 104 forBCD counting

Figure 22. Minimum and Maximum initial Counts

13

�gure 10.10: 8254 : modes 3,4 et 5

148

Page 157: Cours d'Informatique Industrielle

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 1710.5. Annexes

10.5 Annexes

10.5.1 Les Fonctions du Langage C

La communication avec les registres de la carte s'e�ectue 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 Nb = 4095.Vout10 ,

2. convertir ce résultat (Nb) 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 UPD),

10.6 Tableau récapitulatif des adresses de la carte �Impulsion�

FONCTION ADRESSES LECT. ECRIT. DONNEESDA1L = 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 UPD → ConversionADH = ADR1+4 R 4 MSb du CAN + busy

CAN ADL = ADR1+5 R 8 LSb du CANADCONV = ADR1+6 R ConversionMUX = ADR2+1 W Multiplexage des voies + polaritéCOUNT0 = ADR1 R W compteur 0

TIMER COUNT1 = ADR1+1 R W compteur 1COUNT0 = ADR1+2 R W compteur 2TIMCW = ADR1+3 W registre de contrôle

LOGIQUE IOIN = ADR2 R entrées logiquesIOOUT = ADR2 W sorties logiques

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

149

Page 158: Cours d'Informatique Industrielle

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

10.7 Registres du Timer

82C54

OPERATIONAL DESCRIPTION

General

After power-up, the state of the 82C54 is undefined.The Mode, count value, and output of all Countersare undefined.

How each Counter operates is determined when it isprogrammed. Each Counter must be programmedbefore it can be used. Unused counters need not beprogrammed.

Programming the 82C54

Counters are programmed by writing a Control Wordand then an initial count. The control word format isshown in Figure 7.

All Control Words are written into the Control WordRegister, which is selected when A1, A0 e 11. TheControl Word itself specifies which Counter is beingprogrammed.

By contrast, initial counts are written into the Coun-ters, not the Control Word Register. The A1, A0 in-puts are used to select the Counter to be writteninto. The format of the initial count is determined bythe Control Word used.

Control Word Format

A1, A0 e 11 CS e 0 RD e 1 WR e 0

D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 RW1 RW0 M2 M1 M0 BCD

SC Ð Select Counter:

SC1 SC0

0 0 Select Counter 0

0 1 Select Counter 1

1 0 Select Counter 2

1 1Read-Back Command

(See Read Operations)

RW Ð Read/Write:

RW1 RW0

0 0 Counter Latch Command (see Read

Operations)

0 1 Read/Write least significant byte only.

1 0 Read/Write most significant byte only.

1 1 Read/Write least significant byte first,

then most significant byte.

NOTE: Don’t care bits (X) should be 0 to insurecompatibility with future Intel products.

M Ð MODE:

M2 M1 M0

0 0 0 Mode 0

0 0 1 Mode 1

X 1 0 Mode 2

X 1 1 Mode 3

1 0 0 Mode 4

1 0 1 Mode 5

BCD:

0 Binary Counter 16-bits

1 Binary Coded Decimal (BCD) Counter

(4 Decades)

Figure 7. Control Word Format

5

82C54

COUNTER LATCH COMMAND

The second method uses the ‘‘Counter Latch Com-mand’’. Like a Control Word, this command is writtento the Control Word Register, which is selectedwhen A1, A0 e 11. Also like a Control Word, theSC0, SC1 bits select one of the three Counters, buttwo other bits, D5 and D4, distinguish this commandfrom a Control Word.

A1, A0e11; CSe0; RDe1; WRe0

D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 0 0 X X X X

SC1, SC0 - specify counter to be latched

SC1 SC0 Counter

0 0 0

0 1 1

1 0 2

1 1 Read-Back Command

D5,D4 - 00 designates Counter Latch Command

X - don’t care

NOTE:Don’t care bits (X) should be 0 to insure compatibilitywith future Intel products.

Figure 9. Counter Latching Command Format

The selected Counter’s output latch (OL) latches thecount at the time the Counter Latch Command isreceived. This count is held in the latch until it is readby the CPU (or until the Counter is reprogrammed).The count is then unlatched automatically and theOL returns to ‘‘following’’ the counting element (CE).This allows reading the contents of the Counters‘‘on the fly’’ without affecting counting in progress.Multiple Counter Latch Commands may be used tolatch more than one Counter. Each latched Coun-ter’s OL holds its count until it is read. Counter LatchCommands do not affect the programmed Mode ofthe Counter in any way.

If a Counter is latched and then, some time later,latched again before the count is read, the secondCounter Latch Command is ignored. The count readwill be the count at the time the first Counter LatchCommand was issued.

With either method, the count must be read accord-ing to the programmed format; specifically, if theCounter is programmed for two byte counts, twobytes must be read. The two bytes do not have to beread one right after the other; read or write or pro-

gramming operations of other Counters may be in-serted between them.

Another feature of the 82C54 is that reads andwrites of the same Counter may be interleaved; forexample, if the Counter is programmed for two bytecounts, the following sequence is valid.

1. Read least significant byte.2. Write new least significant byte.3. Read most significant byte.4. Write new most significant byte.

If a Counter is programmed to read/write two-bytecounts, the following precaution applies; A programmust not transfer control between reading the firstand second byte to another routine which also readsfrom that same Counter. Otherwise, an incorrectcount will be read.

READ-BACK COMMAND

The third method uses the Read-Back command.This command allows the user to check the countvalue, programmed Mode, and current state of theOUT pin and Null Count flag of the selected coun-ter(s).

The command is written into the Control Word Reg-ister and has the format shown in Figure 10. Thecommand applies to the counters selected by set-ting their corresponding bits D3,D2,D1 e 1.

A0, A1 e 11 CS e 0 RD e 1 WR e 0

D7 D6 D5 D4 D3 D2 D1 D0

1 1 COUNT STATUS CNT 2 CNT 1 CNT 0 0

D5: 0 e Latch count of selected counter(s)D4: 0 e Latch status of selected counter(s)D3: 1 e Select counter 2D2: 1 e Select counter 1D1: 1 e Select counter 0D0: Reserved for future expansion; must be 0

Figure 10. Read-Back Command Format

The read-back command may be used to latch multi-ple counter output latches (OL) by setting theCOUNT bit D5e0 and selecting the desired coun-ter(s). This single command is functionally equiva-lent to several counter latch commands, one foreach counter latched. Each counter’s latched countis held until it is read (or the counter is repro-grammed). That counter is automatically unlatchedwhen read, but other counters remain latched untilthey are read. If multiple count read-back commandsare issued to the same counter without reading the

7

�gure 10.11: Détails des registres du 8254

82C54

COUNTER LATCH COMMAND

The second method uses the ‘‘Counter Latch Com-mand’’. Like a Control Word, this command is writtento the Control Word Register, which is selectedwhen A1, A0 e 11. Also like a Control Word, theSC0, SC1 bits select one of the three Counters, buttwo other bits, D5 and D4, distinguish this commandfrom a Control Word.

A1, A0e11; CSe0; RDe1; WRe0

D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 0 0 X X X X

SC1, SC0 - specify counter to be latched

SC1 SC0 Counter

0 0 0

0 1 1

1 0 2

1 1 Read-Back Command

D5,D4 - 00 designates Counter Latch Command

X - don’t care

NOTE:Don’t care bits (X) should be 0 to insure compatibilitywith future Intel products.

Figure 9. Counter Latching Command Format

The selected Counter’s output latch (OL) latches thecount at the time the Counter Latch Command isreceived. This count is held in the latch until it is readby the CPU (or until the Counter is reprogrammed).The count is then unlatched automatically and theOL returns to ‘‘following’’ the counting element (CE).This allows reading the contents of the Counters‘‘on the fly’’ without affecting counting in progress.Multiple Counter Latch Commands may be used tolatch more than one Counter. Each latched Coun-ter’s OL holds its count until it is read. Counter LatchCommands do not affect the programmed Mode ofthe Counter in any way.

If a Counter is latched and then, some time later,latched again before the count is read, the secondCounter Latch Command is ignored. The count readwill be the count at the time the first Counter LatchCommand was issued.

With either method, the count must be read accord-ing to the programmed format; specifically, if theCounter is programmed for two byte counts, twobytes must be read. The two bytes do not have to beread one right after the other; read or write or pro-

gramming operations of other Counters may be in-serted between them.

Another feature of the 82C54 is that reads andwrites of the same Counter may be interleaved; forexample, if the Counter is programmed for two bytecounts, the following sequence is valid.

1. Read least significant byte.2. Write new least significant byte.3. Read most significant byte.4. Write new most significant byte.

If a Counter is programmed to read/write two-bytecounts, the following precaution applies; A programmust not transfer control between reading the firstand second byte to another routine which also readsfrom that same Counter. Otherwise, an incorrectcount will be read.

READ-BACK COMMAND

The third method uses the Read-Back command.This command allows the user to check the countvalue, programmed Mode, and current state of theOUT pin and Null Count flag of the selected coun-ter(s).

The command is written into the Control Word Reg-ister and has the format shown in Figure 10. Thecommand applies to the counters selected by set-ting their corresponding bits D3,D2,D1 e 1.

A0, A1 e 11 CS e 0 RD e 1 WR e 0

D7 D6 D5 D4 D3 D2 D1 D0

1 1 COUNT STATUS CNT 2 CNT 1 CNT 0 0

D5: 0 e Latch count of selected counter(s)D4: 0 e Latch status of selected counter(s)D3: 1 e Select counter 2D2: 1 e Select counter 1D1: 1 e Select counter 0D0: Reserved for future expansion; must be 0

Figure 10. Read-Back Command Format

The read-back command may be used to latch multi-ple counter output latches (OL) by setting theCOUNT bit D5e0 and selecting the desired coun-ter(s). This single command is functionally equiva-lent to several counter latch commands, one foreach counter latched. Each counter’s latched countis held until it is read (or the counter is repro-grammed). That counter is automatically unlatchedwhen read, but other counters remain latched untilthey are read. If multiple count read-back commandsare issued to the same counter without reading the

7

82C54

count, all but the first are ignored; i.e., the countwhich will be read is the count at the time the firstread-back command was issued.

The read-back command may also be used to latchstatus information of selected counter(s) by settingSTATUS bit D4e0. Status must be latched to beread; status of a counter is accessed by a read fromthat counter.

The counter status format is shown in Figure 11. BitsD5 through D0 contain the counter’s programmedMode exactly as written in the last Mode ControlWord. OUTPUT bit D7 contains the current state ofthe OUT pin. This allows the user to monitor thecounter’s output via software, possibly eliminatingsome hardware from a system.

D7 D6 D5 D4 D3 D2 D1 D0

OUTPUTNULL

RW1 RW0 M2 M1 M0 BCDCOUNT

D7 1 e Out Pin is 10 e Out Pin is 0

D6 1 e Null count0 e Count available for reading

D5-D0 Counter Programmed Mode (See Figure 7)

Figure 11. Status Byte

NULL COUNT bit D6 indicates when the last countwritten to the counter register (CR) has been loadedinto the counting element (CE). The exact time thishappens depends on the Mode of the counter and isdescribed in the Mode Definitions, but until the countis loaded into the counting element (CE), it can’t beread from the counter. If the count is latched or readbefore this time, the count value will not reflect thenew count just written. The operation of Null Countis shown in Figure 12.

THIS ACTION: CAUSES:

A. Write to the controlNull counte1

word register:[1]

B. Write to the countNull counte1

register (CR);[2]

C. New count is loadedNull counte0

into CE (CRxCE);

[1] Only the counter specified by the control word willhave its null count set to 1. Null count bits of othercounters are unaffected.[2] If the counter is programmed for two-byte counts(least significant byte then most significant byte) nullcount goes to 1 when the second byte is written.

Figure 12. Null Count Operation

If multiple status latch operations of the counter(s)are performed without reading the status, all but thefirst are ignored; i.e., the status that will be read isthe status of the counter at the time the first statusread-back command was issued.

Both count and status of the selected counter(s)may be latched simultaneously by setting bothCOUNT and STATUS bits D5,D4e0. This is func-tionally the same as issuing two separate read-backcommands at once, and the above discussions ap-ply here also. Specifically, if multiple count and/orstatus read-back commands are issued to the samecounter(s) without any intervening reads, all but thefirst are ignored. This is illustrated in Figure 13.

If both count and status of a counter are latched, thefirst read operation of that counter will return latchedstatus, regardless of which was latched first. Thenext one or two reads (depending on whether thecounter is programmed for one or two type counts)return latched count. Subsequent reads return un-latched count.

CommandDescription Results

D7 D6 D5 D4 D3 D2 D1 D0

1 1 0 0 0 0 1 0 Read back count and status of Count and status latchedCounter 0 for Counter 0

1 1 1 0 0 1 0 0 Read back status of Counter 1 Status latched for Counter 1

1 1 1 0 1 1 0 0 Read back status of Counters 2, 1 Status latched for Counter2, but not Counter 1

1 1 0 1 1 0 0 0 Read back count of Counter 2 Count latched for Counter 2

1 1 0 0 0 1 0 0 Read back count and status of Count latched for Counter 1,Counter 1 but not status

1 1 1 0 0 0 1 0 Read back status of Counter 1 Command ignored, statusalready latched for Counter 1

Figure 13. Read-Back Command Example

8

�gure 10.12: Détails des registres du 8254 (suite)

150

Page 159: Cours d'Informatique Industrielle

Chapitre 11

Conclusion

Les anciennes entrées/sorties de nos micro-ordinateurs ont largement pro�té des développementsrapide 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 sou�e et ne répondent plus vraiment aux besoins des utilisateurs.

Deux principaux bus se disputent désormais le marché, l�USB et l�IEEE-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, l�USB était jusqu�alors limité à des périphériques lents (claviers,imprimantes, souris, webcam). Avec sa version 2.0, il investit des domaines qui étaient jusqu�alorsréservés à l�IEEE 1394 ou au SCSI (périphériques de stockage externe ou caméscopes DV).

Reste que l�IEEE 1394 restera certainement l�interface privilégiée des périphériques très gour-mand, notamment en ce qui concerne l�audio vidéo (caméscopes, TV numériques, DVD). En e�et,il o�re d�une 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

Page 160: Cours d'Informatique Industrielle

Liste des �gures

1.1 Architecture en couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Architecture de Von Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Carte mère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Schéma fonctionnel d'un microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . 61.5 Unité de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6 Unité Arithmétique et Logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.7 Unité de traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.8 structure du 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.9 Hiérarchie mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.10 Exemple de disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.11 Notion de �cluster� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.12 Hierarchie des mémoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.13 Exemples de codages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.14 E�et capacitif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.15 Qualité de transmission en fonction de la bande passante . . . . . . . . . . . . . . . . 171.16 Modes de transmission : simplex et duplex . . . . . . . . . . . . . . . . . . . . . . . . 181.17 Liaisons série et parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.18 Transmission synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.19 Transmission asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.20 Schéma simpli�é d'un micro-ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . 201.21 Principe du DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.22 Quelques rôles d'un système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . 23

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

3.1 Scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2 Interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3 Table des vecteurs d'interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.4 Exemple de partage d'IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.5 Architecture d'un PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.6 Liaison entre les 2 PIC et le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . 513.7 Liaisons matérielles d'un PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.8 Sous programme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.1 Connecteur DB25 pour SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.2 Dialogue avec une imprimante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.3 Handshake : timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.4 Protocole Centronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

152

Page 161: Cours d'Informatique Industrielle

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

4.5 Signaux et DB25 en mode étendu (EPP) . . . . . . . . . . . . . . . . . . . . . . . . . 644.6 Lecture et écriture d'une donnée en mode EPP . . . . . . . . . . . . . . . . . . . . . 644.7 Lecture et écriture d'une adresse en mode EPP . . . . . . . . . . . . . . . . . . . . . 654.8 Signaux et DB25 en mode étendu (ECP) . . . . . . . . . . . . . . . . . . . . . . . . . 654.9 Commande et Data forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.10 Commande et Data reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.1 Liaisons multipoint et directe point à point (utilisant la tension) . . . . . . . . . . . . 685.2 Principe d'une communication série RS232 . . . . . . . . . . . . . . . . . . . . . . . . 695.3 E�cacité d'une communication série RS232 . . . . . . . . . . . . . . . . . . . . . . . 695.4 Niveau logique en communication série RS232 . . . . . . . . . . . . . . . . . . . . . . 705.5 Parité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.6 Transmission de �C�, 2 Stop, parité impaire, ASCII non étendu . . . . . . . . . . . . 705.7 Trame de communication RS232 : résumé . . . . . . . . . . . . . . . . . . . . . . . . 715.8 Relation entre niveau logique et tension . . . . . . . . . . . . . . . . . . . . . . . . . 715.9 Signaux sur les connecteurs DB25 et DB9 . . . . . . . . . . . . . . . . . . . . . . . . 725.10 Liaison duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.11 Connections pour liaisons simplex et duplex . . . . . . . . . . . . . . . . . . . . . . . 735.12 Connections DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.13 di�érentes phases d'une communication DTE vers DCE . . . . . . . . . . . . . . . . 745.14 DTE-DTE half-duplex sans contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.15 DTE-DTE full-duplex sans contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.16 Câblage Null Modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.17 DTE-DTE avec contrôle de �ux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.18 DTE-DTE avec contrôle de �ux complet . . . . . . . . . . . . . . . . . . . . . . . . . 775.19 Exemple de trame en protocole RTS CTS . . . . . . . . . . . . . . . . . . . . . . . . 785.20 Di�érentes phases d'une communication entre 2 DTE (A et B) . . . . . . . . . . . . 785.21 Exemple de trame en protocole Xon - Xo� . . . . . . . . . . . . . . . . . . . . . . . . 795.22 Algorithme Xon-Xo� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.23 Propriétés du port COM 1 sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.24 Algorithmes d'émission / réception d'un caractère ASCII avec utilisation des bu�ers 81

6.1 UART : architecture interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.2 Transmission avec modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.3 IRQ pour UART sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.4 Principe d'émission - réception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856.5 Mécanisme d'émission sans FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866.6 Exemple de séquence temporelle en émission . . . . . . . . . . . . . . . . . . . . . . . 866.7 Mécanisme de réception sans FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.8 Réglages des FIFO sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.9 Tampon Circulaire (FIFO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.10 Structure interne (registres) d'un UART 16550 . . . . . . . . . . . . . . . . . . . . . 95

7.1 Raccordement sur le bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977.2 Validité des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.3 Conditions de départ et d'arrêt de transmission du bus I2C . . . . . . . . . . . . . . 997.4 Re départ (bit SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.5 Validation de transmission : ACKnowledge . . . . . . . . . . . . . . . . . . . . . . . . 1007.6 Ecriture simple (1 octet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

153

Page 162: Cours d'Informatique Industrielle

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

7.7 Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.8 Lecture simple (1 octet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.9 Exemple de collision (ou con�it) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027.10 Sens du transfert : lecture ou écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.11 Adressage standard (7 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047.12 Ecriture multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.13 Lecture multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.14 format combiné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.15 Exemple de lecture d'une mémoire (24C02) . . . . . . . . . . . . . . . . . . . . . . . 1067.16 Exemple d'écriture d'une page dans une mémoire (24C02) . . . . . . . . . . . . . . . 1067.17 Adressage étendu (10 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.18 Ecriture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.19 Lecture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.20 Ecriture puis lecture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.21 Ecriture en mode standard puis étendu . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.22 Exemple de connection du bus I2C au port série . . . . . . . . . . . . . . . . . . . . . 108

8.1 Exemple de connecteurs USB (A et B) . . . . . . . . . . . . . . . . . . . . . . . . . . 1108.2 Composition (signaux) du câble USB . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118.3 Correspondance des signaux pour les connecteurs A et B . . . . . . . . . . . . . . . . 1118.4 Structure étoile série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.5 Topologie logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.6 Couches du protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148.7 Frame USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.8 Paquet SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168.9 Paquets de la trame USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168.10 Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168.11 Structure d'un paquet USB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178.12 Codage NRZI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178.13 Champ du paquet Token (Jeton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188.14 Champ du paquet SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188.15 Champ du paquet DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188.16 Champ du paquet Handshake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.17 Transfert de commande : transaction d'installation . . . . . . . . . . . . . . . . . . . 1218.18 Transfert de commande : transaction dde données (facultatif) . . . . . . . . . . . . . 1228.19 Transfert de commande : transaction d'état . . . . . . . . . . . . . . . . . . . . . . . 1228.20 Transfert en vrac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238.21 Transfert par interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248.22 Transfert isochrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248.23 Hierarchie des descripteurs USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268.24 Contrôleur et Hub USB sur votre PC . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

9.1 Topologie physique de l'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.2 Exemple de connecteur Firewire 6 broches . . . . . . . . . . . . . . . . . . . . . . . . 1309.3 Topologie logique de l'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319.4 Cycle nominal du bus IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1329.5 Détails de la trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1329.6 Contenu des paquets asynchrone et isochrone . . . . . . . . . . . . . . . . . . . . . . 1329.7 Architecture en couche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

154

Page 163: Cours d'Informatique Industrielle

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

9.8 Transaction asynchrone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349.9 Transaction isochrone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349.10 Intervalles pour l'arbitrage (mode isochrone) . . . . . . . . . . . . . . . . . . . . . . . 1369.11 Split transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379.12 Concatenation transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379.13 Uni�ed transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

10.1 Exemple de système d'acquisition de données . . . . . . . . . . . . . . . . . . . . . . 13910.2 Architecture sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . . . . 14210.3 Schéma de principe d'un CNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14210.4 Le CNA MX7537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14310.5 Schéma de principe d'un CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14410.6 Le CAN AD574 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14410.7 Architecture du timer 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14610.8 Etapes du fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14610.9 8254 : modes 0,1 et 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14810.108254 : modes 3,4 et 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14810.11Détails des registres du 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15010.12Détails des registres du 8254 (suite) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

155

Page 164: Cours d'Informatique Industrielle

Liste des tableaux

1.1 Exemple : 33ème vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . 261.2 Quelques fonctions du BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.3 Quelques fonctions du DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.1 Caractéristiques FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.2 Caractéristiques bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.3 Récapitulatif des performances des principaux Bus . . . . . . . . . . . . . . . . . . . 42

3.1 Table des Vecteurs d'Interruptions de la famille Intel X86 . . . . . . . . . . . . . . . 483.2 Registre OCW1 du PIC 1 (0x21) et du PIC 2 (0xA1) . . . . . . . . . . . . . . . . . . 53

4.1 Di�érentes caractéristiques des ports parallèles . . . . . . . . . . . . . . . . . . . . . 604.2 Signaux des ports parallèles SPP, EPP et ECP . . . . . . . . . . . . . . . . . . . . . 614.3 Registres du 8255 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.1 Protocole : format d'une trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.2 Brochage du port série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.1 Tables des registres UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.2 Nombres à charger pour les vitesses de transmission . . . . . . . . . . . . . . . . . . . 876.3 Priorité des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.4 Seuils des FIFO (pour un FIFO 16 octets) . . . . . . . . . . . . . . . . . . . . . . . . 896.5 Nombre de bits de codage des données (payload) et de bits de STOP . . . . . . . . . 906.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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208.2 Erreur des paquets USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218.3 Caractéristiques principales des types de transferts USB . . . . . . . . . . . . . . . . 125

10.1 registres du CNA (MX 7537) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14310.2 registres du CAN (AD 574) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14510.3 Résumé des registres de la carte �IMPULSION � . . . . . . . . . . . . . . . . . . . . . 149

156

Page 165: Cours d'Informatique Industrielle

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