Vous êtes sur la page 1sur 165

anne L3 Universit de Caen Fillire EEA-IE-EIA

Version du

\ThesisDate

Cours d'Informatique Industrielle

Responsable Pdagogique :

Eric Magarotto

: 02 31 45 27 09, email : eric.magarotto@greyc.ensicaen.fr www.greyc.ensicaen.fr/emagarot/COURS.html

Avertissement : Ce document constitue le support du cours et ne prtend donc ni l'originalit, ni l'exhaustivit. Ces notes doivent beaucoup aux emprunts fait de nombreux ouvrages et dirents travaux de collgues. Ce document est une version provisoire qui s'adresse (en priorit) aux tudiants de l'Universit de Caen en L3 (14 heures de Cours).

Anne Universitaire 2005-2006

Table des matires


Chapitre 1 Architecture - Principes Gnraux
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 Un peu d'histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modles d'architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mmoire Principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mmoires Secondaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gnralits sur les communications . . . . . . . . . . . . . . . . . . . . . . . . Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Techniques d'change de donnes . . . . . . . . . . . . . . . . . . . . . . . . . Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les critres de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 4 5 10 12 16 16 20 20 23 23 24 24 27

Structure : composants principaux . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Echanges de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Systme d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapitre 2 Les Bus


2.1 2.2 Caractristiques gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 2.2.2 2.2.3 2.2.4 2.3 2.3.1 Bus de donnes interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus frontal, de donnes externes . . . . . . . . . . . . . . . . . . . . . . . . . Bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus de mmoire cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus parallles : ISA-EISA, MCA-VLB, PCI, IDE-EIDE, AGP, SCSI . . . . . 29 32 32 33 34 35 36 36

Bus d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.5.2 2.6

Bus sries : XPCI, SSA-FC-IEEE1394, SATA, SPI-Microwire, I2C . . . . . . USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IEEE1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IEEE488 (GPIB et HPIB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PCCard (ancien PCMCIA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38 39 39 40 40 41 41 41 42

Bus de priphriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Bus embarqus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Rcapitulatif des principales caractristiques des divers Bus . . . . . . . . . . . . . .

Chapitre 3 Interruptions
3.1 3.2 3.3 3.4 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Interruption matrielle et logicielle . . . . . . . . . . . . . . . . . . . . . . . . Systme d'interruptions hirarchises . . . . . . . . . . . . . . . . . . . . . . . . . . . Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mcanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5 3.5.1 3.5.2 3.6 3.7 Identication de la source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Actions entreprendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reprise du programme interrompu . . . . . . . . . . . . . . . . . . . . . . . . Le partage des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture du PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmer le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 44 45 45 46 46 47 48 49 49 49 50 52 54 54 54 55 56 57

Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Gestion des Entres-Sorties par interruption . . . . . . . . . . . . . . . . . . . . . . . Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 3.7.2 Interruptions BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interruptions DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions lies aux interruptions . . . . . . . . . . . . . . . . . . . . . . . . .

3.8

La programmation des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.1

Chapitre 4 Port Parallle


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 4.1.2 Principales Caractristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . Norme IEEE 1284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 60 60 i

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Table des matires

4.1.3 4.1.4 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2

Signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode standard SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode tendu EPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode tendu ECP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interruption logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tableau des registres pour tous les modes . . . . . . . . . . . . . . . . . . . .

61 62 62 62 63 65 66 66 67

Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapitre 5 Port Srie


5.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 Format et Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Norme RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Brochage du port srie standard . . . . . . . . . . . . . . . . . . . . . . . . . Description des signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modalits de transmission (simplex-duplex) . . . . . . . . . . . . . . . . . . . Liaison DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Liaison DTE-DTE sans contrle de ux . . . . . . . . . . . . . . . . . . . . . Liaison DTE-DTE avec contrle de ux matriel . . . . . . . . . . . . . . . . Liaison DTE-DTE avec contrle de ux logiciel . . . . . . . . . . . . . . . . . Algorithme Xon-Xo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procdure de test : rebouclage entres / sorties . . . . . . . . . . . . . . . . . Comment reconnatre un DTE d'un DCE ? . . . . . . . . . . . . . . . . . . . Protocole d'change sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmes mission - rception d'un caractre . . . . . . . . . . . . . . . . . 68 68 71 71 72 73 74 74 75 76 79 80 80 80 80 81 81

Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapitre 6 UART
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.1.2 6.2 6.3 ii Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Avantages de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 82 83 83 84

Conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les Registres de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.3.8 6.3.9 6.3.10 6.4 6.4.1 6.4.2 6.5

RBR/THR mission/rception . . . . DLL / DLM vitesse de transmission . IER autorisation d'interruption . . . . . IIR nature des interruptions . . . . . . FCR rglages des buer FIFO . . . . . LCR rglages de la transmission . . . . MCR rglages du modem . . . . . . . . LSR tat de la transmission . . . . . . . MSR tat du modem . . . . . . . . . . SCR rglages pour une horloge externe

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85 87 87 88 88 90 90 91 91 92 92 92 93 95

Programmer l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Par scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Par interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Chapitre 7 I2C
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 7.1.2 7.1.3 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.3 7.3.1 7.3.2 7.4 7.4.1 7.4.2 7.4.3 7.5 7.5.1 7.5.2 7.5.3 Prsentation et domaine d'application . . . . . . . . . . . . . . . . . . . . . . Caractristiques gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nouvelle caractristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les 2 modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . La validit des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les conditions de dbut / n . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 96 97 98 98 98 98 99

Le protocole I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

La transmission de donnes d'un octet . . . . . . . . . . . . . . . . . . . . . . 100 La synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 L'arbitrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Adresses rserves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Ecriture du matre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Lecture du matre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Format combin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 iii

La gestion des conits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

L'adressage des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Mode de transfert en adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . 104

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Table des matires

7.5.4 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7

Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Adressage tendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Ecriture du matre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Lecture du matre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Formats combins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Mode de transfert en adressage tendu . . . . . . . . . . . . . . . . . . . . . . . . . . 106

La programmation du bus I2C

Chapitre 8 USB
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 8.1.1 8.1.2 8.1.3 8.2 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.3 8.3.1 8.3.2 8.3.3 8.3.4 8.3.5 8.3.6 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.5 8.5.1 8.5.2 8.6 iv USB 1.1 et 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Cbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Modes de transmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 PIPE : Prliminaire la communication . . . . . . . . . . . . . . . . . . . . 113 Phases de transactions (protocole) . . . . . . . . . . . . . . . . . . . . . . . . 113 Modes de transferts des paquets (terminaisons) . . . . . . . . . . . . . . . . . 113 Squencement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 PIPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Trame de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Format des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Types de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Champs des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Dtection d'erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Control Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Bulk Data Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Interrupts Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Isochronous Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Enumration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Descripteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Transactions et Transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

Types de transferts (terminaisons) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Enumration et Descripteurs USB

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

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 9 IEEE-1394
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.3.1 FireWire ? IEEE 1394 ? i-Link ? . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Avantages de L'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Chipset VIA Fire xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Un bus standard ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Cbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Norme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Caractristiques principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

Fonctionnement du bus FireWire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Un protocole, trois couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Une couche physique optimise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Un arbitrage ecace et juste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Plug and Play et Hot Plugging ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 IEEE 1394 b, des amliorations . . . Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Chapitre 10 Acquisition de Donnes - Temps Rel


10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.2 Structure gnrale d'un systme de mesure . . . . . . . . . . . . . . . . . . . . . . . . 139 10.2.1 Les Capteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.2.2 Le conditionnement du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.2.3 Le multiplexage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.2.4 La Conversion (CNA et CAN) . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.2.5 Le Logiciel d'Acquisition et de Traitement . . . . . . . . . . . . . . . . . . . . 140 10.2.6 Les Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.3 Gnralits sur les cartes E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.4 Etude sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . . . . . . . 141 10.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.4.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.4.3 Etude du Timer 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 10.5 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.5.1 Les Fonctions du Langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 v

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Table des matires

10.5.2 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.6 Tableau rcapitulatif des adresses de la carte Impulsion . . . . . . . . . . . . . . . 149 10.7 Registres du Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Chapitre 11 Conclusion Liste des gures Liste des tableaux Bibliographie 152 156 157

vi

Chapitre 1

Architecture - Principes Gnraux


Sommaire
1.1 1.2 1.3 1.4 Introduction . . . . . . . . . . . . . Structure : composants principaux Echanges de donnes . . . . . . . . Systme d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . 4 . 16 . 23

1.1 Introduction
Un ordinateur est une machine de traitement de l'information. Il est capable d'acqurir de l'information, de la stocker, de la transformer en eectuant des traitements quelconques puis de la restituer sous une autre forme. La suite des instructions dcrivant la faon dont l'ordinateur doit eectuer un certain travail est appel programme. L'ensemble des instructions excutables est appel langage. Un ordinateur peut alors tre considr comme une hirarchie de niveaux. A chaque niveau correspond une machine virtuelle et un langage associ.

1.1.1 Un peu d'histoire . . .


On peut rsumer le dveloppement en quelques grandes priodes :

gnration 0 - les calculateurs mcaniques (1642-1945) : La premire machine est attribu

Pascal (addition et soustraction) amliore ensuite par Leibniz (multiplication et division). Au 19me sicle, Babbage inventa la machine dirences puis la machine analytique devenue programmable par Ada Augusta Lovelace et avec une structure trs proche des machines actuelles. Atanassof inventa une machine qui utilisait l'arithmtique binaire et des condensateurs en guise de RAM. Toutefois, cette machine ne put tre ralise faute d'adquation technologique. La premire vritable machine fut donc celle d'Aiken (en 1944) base de relais et de rubans perfors. gnration 1 - les tubes vides (1945-1955) : Avec l'avnement de l'lectronique et l'apparition de la guerre mondiale, on se consacra au chirage (cryptage et codage) et on aboutira la construction du premier ordinateur lectronique (COLOSSUS) auquel Turing a fortement particip. Mauchley et Eckert achevrent une machine (ENIAC) utilisant des tubes vides et des relais (30 tonnes, 20 registres de 10 chires) en 1946. Un des participants au projet ENIAC, Von Neumann construisit l'IAS (1952) qui constitue encore aujourd'hui, l'architecture 1

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

de base de la plupart de nos ordinateurs. Pendant ce temps, l'entreprise Eckert-Mauchley fut la premire commercialiser un ordinateur, l'UNIVAC. Plusieurs entreprises telles que IBM ou Bull s'intressrent alors la construction et la commercialisation d'ordinateurs. gnration 2 - les transistors (1955-1965) : Le prix Nobel de Physique de Bardeen, Brattain et Shockley fut dlivr en 1956 pour l'invention en 1948 chez Bell Labs du transistor. Ceci rvolutionna dnitivement les ordinateurs. DEC (en 1961), commercialisa le premier miniordinateur, le PDP-1 et continua avec le PDP-8 qui possde une caractristique nouvelle : l'omnibus, ralisant l'interconnection de tous les composants. IBM ragit avec la construction de diverses machines (1401, 7094).En 1964, CDC construit une machine avec une architecture parallle, le 6600 dont Cray est l'architecte. La course la puissance tait lance, symbolise par le Gamma60 de Bull. La prise de conscience de l'importance du logiciel se fait cette poque (Algol, anctre du Pascal) mais n'inue pas encore sur la construction de matriel ddi. gnration 3 - les circuits intgrs (1965-1980) : Noyce inventa le circuit intgr en 1958. IBM cra la premire gamme unie (calcul et gestion) d'ordinateur avec le System/360 qui dota toute la gamme avec le mme langage d'assemblage et instaura la multiprogrammation qui permet plusieurs programmes de rsider simultanment en mmoire. Le PDP-11, successeur du PDP-8 et d'un rapport cot/performance acceptable, allait assoir la suprmatie de DEC dans le secteur de la mini-informatique. gnration 4 - les VLSI (1980- ?) : Les VLSI (Very Large Scale Integration ) permettent, dans les annes 80, l'intgration de milliers, puis de millions de transistors sur une puce, favorisant la miniaturisation et l'augmentation de la rapidit de traitement. Les prix chutant, l're de l'informatique personnelle commence. Kildall conoit le CP/M, un logiciel d'exploitation ddi au 8080 d'Intel.Apple fut propuls au rang de leader mondial avec l'Apple puis l'Apple II conues par Jobs et Wozniak. IBM rpliqua avec le PC (qui utilisa le 8088) en 1981 et battit tous les records de vente, le systme d'exploitation tant le MS-DOS. IBM et Microsoft dvelopprent (respectivement) OS/2 (interface graphique concurrente du MacIntosh) et Windows (utilisant la couche DOS). Au milieu des annes 80, l'architecture RISC commena a remplacer CISC, juge trop complexe. Le superscalaire dbuta en 1990 . . .

1.1.2 Modles d'architectures


1.1.2.1 Architecture en couches
La gure 1.1 reprsente une hirarchie qui caractrise l'architecture d'une machine standard. Au fur et mesure que l'on monte dans la hirarchie, l'abstraction est plus importante ( un niveau donn la machine utilise les services de niveaux infrieurs). Deux parties peuvent tres distingues : la partie systme et la partie applications. La dcomposition est la suivante :  couche application

langages d'application : ces langages sont le plus souvent l'aaire de spcialistes. Ce sont

des langages spcialiss de trs haut niveau, trs synthtiques et abstraits. Ils ont t conus pour rendre l'utilisation des machines plus simple. langages volus : ce sont des langages universels trs utiliss par les scientiques. D'innombrables langages ont t conus mais les plus populaires sont Pascal, C, Fortran, Ada. Proches de l'algorithme, ils permettent de coder assez aisment et rapidement les problmes scientiques. langage d'assemblage : c'est l'expression symbolique du langage propre la machine. Ce langage est constitu de mnmoniques qui dcrivent le jeu d'instruction du processeur. Il est en eet trs dicile (voire impossible) de programmer la machine en binaire di2

Chapitre 1
CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Fonctionnement dun processeur


 couche systme

1.1. Introduction

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

1.1 Introduction

systme d'exploitation : un ordinateur nu est inexploitable. Le rle du systme d'exploita-

tion est d'orir l'utilisateur un ensemble de services permettant d'utiliser les ressources Dans ce chapitre nous rappelons larchitecture gnrique dun ordinateur et les dide la machine (mmoire, clavier ...). Le langage associ est compos de commandes que rentes units fonctionnelles dun processeur. Certaines de ces WindowsXP units ainsi que la mmoire peut excuter ce systme (Unix, Linux, WindowsNT, ...). macromachine out couche ISA du processeur de la machine (Pendes ordinateur ont tudies dans: il le s'agit cours essentiellement de deuxime anne. tium, Athlon, PowerPC ...). Le langage associ est compos par le jeu d'instruction du processeur (langage machine du processeur ou langage binaire). micromachine ou micro-architecture : l'excution d'une instruction du langage machine est une opration qui ncessite galement une opration de traduction en une squence de microoprations. Ce niveau est invisible par l'utilisateur mais constitue un niveau important pour le concepteur du processeur. Le langage associ est compos de microinstructions que peut excuter le processeur. Un ordinateur peut tre considr comme une hirarchie de niveaux. A chaque niveau machine physique ou couche logique : a ce niveau on dcrit les composants lectroniques correspond une machine virtuelle Le et un langage associ (voir gure 1.1). qui composent l'ordinateur. langage associ est constitu des signaux logiques 0 et 1.

1.2 Architecture multi-niveaux

Langages dapplication

langages spcialiss

Applications

Langages volus

Ada, Pascal, C, ...

Langages dassemblage

Assembleur

Systme dexploitation

Linux, WindowsNT, ...

Macro-machine Systme Micro-machine

instructions machine

micro-instructions

Machine physique

langage binaire

gure 1.1: Architecture en couches

Fig. 1.1 Hirarchie de niveaux

1.1.2.2 Architecture de Von Neumann


La proposition de Von Neumann est encore 3 aujourd'hui la base de l'architecture de presque tous les ordinateurs. La machine de Von Neumann est compose de cinq parties : la mmoire, l'unit arithmtique et logique, l'unit de contrle, et les dispositifs d'entres et de sorties. La gure 1.2 donne le schma simpli de cette machine. 3

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

gure 1.2: Architecture de Von Neumann

1.2 Structure : composants principaux

Un ordinateur est constitu de processeurs, de mmoires et de dispositifs d'entre/sortie judicieusement interconnects. Du point de vue utilisateur, un ordinateur est gnralement compos des lments suivants :  d'une unit centrale (le botier),  d'un moniteur (l'cran),  de priphriques externes (souris, imprimantes, scanner, clavier),  d'interfaces d'entre-sortie (cartes USB, SCSI, cartes d'extension diverses),  de priphriques internes (cartes sons, vido, . . . ),  d'un disque dur, d'un lecteur de disquettes, d'un lecteur de CD-ROM, DVD, . . . La carte-mre (voir gure 1.3) est l'lment principal de l'ordinateur car c'est sur elle que sont connects les lments constitutifs de l'ordinateur. Celle-ci est compose 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 mre, appel chipset. Son rle est capital, il prend en charge le contrle de la circulation des informations : l'horloge du systme, la mmoire vive, l'accs direct mmoire (Direct Memory Access ), le clavier, la souris et les connecteurs d'extension. Il rgit tous les changes au sein du PC en aiguillant les donnes sur les dirents bus de la carte mre : le bus mmoire, PCI, AGP, etc . . .  de la mmoire : BIOS ROM, RAM et mmoire cache,  d'un contrleur de disques permettant le contrle du(des) disque(s) dur(s), du lecteur CDROM et du lecteur de disquettes,  des priphriques internes connects sur les bus ISA, PCI ou AGP . . .  des circuits grant les Entres/Sorties,  d'une horloge et d'une pile pour le CMOS. 4

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

gure 1.3: Carte mre

1.2.1 Le microprocesseur
Un microprocesseur est un circuit intgr complexe caractris par une trs grande intgration et dot des facults d'interprtation et d'excution des instructions d'un programme. Il est charg d'organiser les tches prcises par le programme et d'assurer leur traitement. C'est le cerveau du systme. Il est parfois appel CPU (Central Processing Unit ) et est caractris par sa frquence d'horloge (en MHz), sa largeur des bus de donnes et d'adresse, sa mmoire adressable, le nombre de transistors 1 et la taille de la gravure (en microns). Ses performances sont caractrises par le CPI (Cycle Par Instruction) et le MIPS (Millions d'Instructions Par Secondes) qui dpendent directement de la frquence d'Horloge et son jeu d'instructions. Un microprocesseur est construit autour de deux lments principaux : 1. une unit de commande 2. une unit de traitement Ces lments sont associs des registres chargs de stocker les direntes informations traiter 2 . L'ensemble sont relis entre eux par des bus internes (de donnes et d'adresses) permettant l'change d'informations (voir gure 1.4).
Loi de Moore : pour le moment, cette loi (le nombre de transistors intgrs sur les circuits double tous les 18 mois) est toujours respecte. 2 Il existe deux types de registres : registre d'usage gnral (BP) connect au bus de donnes et les registres d'adresses (PP : registre pointeur et SP : pointeur de pile LIFO) connects au bus d'adresses.
1

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

gure 1.4: Schma fonctionnel d'un microprocesseur

Remarque 1.1 (jeu d'instructions et langage). La premire tape de conception d'un microprocesseur consiste dnir son jeu d'instructions lmentaires, notamment le type d'instruc-

tions, leur codage, les modes d'adressage et le temps d'excution relatif aux diverses instructions. Le seul langage compris par le microprocesseur est le langage machine. Pour faciliter la tche du programmeur, on utilisera le langage assembleur (propre chaque microprocesseur) compos de mnmoniques (oprations de transfert, arithmtiques et logiques). Pour viter la dicult de mise en uvre de l'assembleur, on utilise un langage de haut niveau (C, Pascal, Java, etc . . . ) plus adapt aux applications. Pour que ce dernier soit compris par le microprocesseur, il faut le compiler (compilateur : traduction en assembleur) puis l'assembler (assembleur : conversion en code machine). s

1.2.1.1 Unit de commande


C'est la partie commande du microprocesseur. Elle permet de squencer le droulement des instructions. elle eectue la recherche en mmoire de l'instruction. Comme chaque instruction est code en binaire, l'unit de commande assure le dcodage pour raliser l'excution puis prparer l'instruction suivante. Elle est compos par :  le compteur de programme (PC, Program Counter ) : registre qui contient l'adresse de l'instruction excuter ;  le registre et le dcodeur d'instruction (IR, Instruction Register ) : stockage et dcodage des instructions excuter ;  le squenceur : bloc logique de commande qui organise l'excution des instructions au rythme d'une horloge. Il labore tous les signaux de synchronisation internes ou externes (bus de commande).

gure 1.5: Unit de commande 6

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

1.2.1.2 Unit de traitement

C'est la partie oprative du microprocesseur. Il s'agit du cur du microprocesseur. Cette unit regroupe les circuits qui assurent les traitements ncessaires l'excution des instructions. Elle est compose de :  une Unit Arithmtique et Logique (ALU : Arithmetic and Logical Unit ) : ce circuit assure les fonctions logiques (comparaison, dcalage, ET, OU, etc . . . ) et arithmtiques (addition, soustraction, etc . . . ) ;  un registre d'tat constitu (gnralement) de 8 bits dont chacun reprsente l'tat de la dernire opration eectue par l'ALU : Les principaux indicateurs d'tat (ou drapeaux : ag )sont la retenue (Carry), la retenue auxiliaire (AC), le signe (S), le dbordement (oVerow), le zro (Z) et la parit (P) ;

gure 1.6: Unit Arithmtique et Logique

 des accumulateurs qui sont des registres servant stocker une oprande au dbut et le rsultat la n d'une opration.

gure 1.7: Unit de traitement 7

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

1.2.1.3 Structure Interne du 8086

gure 1.8: structure du 8086

1.2.1.4 Cycle d'excution d'une instruction


Un microprocesseur ne comprend qu'un nombre limit d'instructions (codes en binaire). Le traitement d'une instruction peut alors tre dcompos en 3 phases principales :

Phase 1 : recherche de l'instruction traiter


1. l'unit de commande met un ordre de lecture et place la valeur contenue dans le compteur de programme (PC) (adresse de l'instruction) sur le bus d'adresses. 2. aprs un certain temps (d'accs la mmoire), le contenu de la case mmoire slectionne est disponible sur le bus de donnes. 3. l'instruction est stocke dans le registre IR. 8

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

Phase 2 : dcodage de l'instruction


1. l'unit de commande transforme l'instruction (code sous forme de mots binaires) en une suite de commandes lmentaires. 2. l'unit de commande rcupre (si besoin) sur le bus de donnes la valeur d'une donne en provenance de la mmoire. 3. l'oprande est stocke dans un registre de base.

Phase 3 : excution de l'instruction


1. le micro-programme ralisant l'instruction est excut. 2. les drapeaux sont positionns. 3. l'unit de commande positionne le compteur de programme (PC) pour l'instruction suivante.

1.2.1.5 Familles d'architecture des microprocesseurs


Il existe actuellement 2 grandes familles :  architecture CISC (Complex Instruction Set Computer ) : elle est historiquement la plus ancienne. Elle consiste privilgier des instructions plus complexes (elle ncessite un dcodeur complexe, le micro-code) du fait de la lenteur de la mmoire (comparativement au microprocesseur). C'est donc une architecture qui comporte un grand nombre d'instructions. Pour une tche donne, on excute un petit nombre d'instructions qui ncessitent chacune un grand nombre de cycles.  architecture RISC (Reduced Instruction Set Computer ) : elle dcoule d'une tude statistique qui a prouv que 80 % des traitements des langages de haut niveau faisaient appel seulement 20 % des instructions microprocesseur, d'o l'ide de rduire ce jeu d'instruction. Etant donn cette rduction, la possibilit d'une ralisation base de squenceur cbl libre de la surface et permet ainsi d'augmenter le nombre de registres ou d'units de traitement (chaque instruction s'excute en un cycle d'horloge). Toutefois, cette architecture impose l'emploi d'un compilateur trs volu. Le choix entre ces 2 types d'architectures se fait en fonction des applications vises et en comparant le nombre d'instructions et de cycles ncessaires ces applications.

1.2.1.6 Amliorations : paralllisme et pipelining


L'ensemble des amliorations tendent diminuer le temps d'excution du programme. L'ide naturelle consiste augmenter la frquence de l'horloge. Toutefois, cette acclration entrane une sur-consommation et une lvation de la temprature, imposant un refroidissement ou une diminution de la tension d'alimentation. L'autre possibilit consiste augmenter la puissance de traitement du microprocesseur (diminuer le nombre de cycles ncessaire l'excution d'une instruction). Cela se fait par une optimisation du compilateur ou par le choix d'une autre architecture telle que le pipelining ou la paralllisme :

pipelining : Le pipelining est un principe simple comprendre. Un programme comporte gnra-

lement des portions de code (plus ou moins grandes) qui sont traites de nombreuses fois par le processeur. Le pipelining permet, grce au partitionnement des instructions en plusieurs tapes, d'avoir une instruction en cours d'excution dans chacune des tapes, permettant d'amliorer l'ecacit. Le nombre d'tapes qui caractrise les microprocesseurs pipeline est appel tages 3 .

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

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

paralllisme : Le paralllisme, ou architecture superscalaire consiste excuter simultanment

sur des processeurs dirents des instructions relatives un mme programme. Le processeur possde plusieurs units de traitement travaillant en parallle. Cela se traduit par le dcoupage d'un programme en plusieurs processus qui seront traits par des processeurs dirents dans le but de gagner en temps d'excution. Cela ncessite toutefois une communication entre les dirents processus donc une mmoire cache importante.

Remarque 1.2 (Mmoire cache ou antmmoire). Malgr des progrs technologiques iden-

tiques pour les mmoires et les microprocesseurs, le dcodage des adresses et la lecture/criture d'une donne restent des phnomnes incompressibles. Pour viter les temps de latence qui en dcoule, on dispose d'une mmoire (appele mmoire cache 4 ou antmmoire) trs rapide entre le microprocesseur et la mmoire. Le principe repose sur le fait que la mmoire cache conserve les mots mmoires les plus frquemment employs (plutt que de les stocker dans la mmoire principale). Cette mmoire cache est spare en plusieurs niveaux (cache interne : L1 et cache externe : L2 et L3) et le cache interne (L1) est spar en 2 (l'un pour les instructions, l'autre pour les donnes). Il faut noter que la somme des espaces mmoires ncessaires dpasse presque toujours la taille physique de la mmoire. Pour pallier cet inconvnient, on utilise de la mmoire virtuelle avec les notions associes de pagination, segmentation et TLB (tampon de traduction ). s Remarque 1.3 (Processeurs spciaux). Certains processeurs (rduits) moins performants sont ddis aux applications, permettant une optimisation des fonctions. Il s'agit des microcontrolleurs (acquisition temps rel, interfaage) et des DSP (traitement numrique du signal, application en automatique, multimdia, lectronique embarque). L'extension du paralllisme mne aux processeurs matriciels qui sont bass sur l'emploi en parallle de plusieurs processeurs. s

1.2.2 Mmoire Principale


1.2.2.1 gnralits Dnition 1.1 (mmoire). Une mmoire est un circuit semi-conducteur permettant d'enregistrer, de conserver et de restituer des informations (appeles donnes). s C'est cette capacit de mmorisation qui explique la polyvalence des systmes numriques et leur adaptabilit de nombreuses situations. Les donnes peuvent tre lues ou crites. Il y a criture lorsqu'on enregistre des informations en mmoire et lecture lorsqu'on rcupre des informations prcdemment enregistres.

1.2.2.2 Organisation et caractristiques


Une mmoire peut tre dcrite comme une armoire de rangement dont chaque tiroir constitue une case mmoire qui peut contenir un seul lment (gnralement un octet ou bien un mot de longueur une puissance de 2, dnit par la largeur du bus de donnes). Le nombre de case est alors lev et il est ncessaire de pouvoir les reprer par un numro appel adresse (voir cours de Langage C : pointeurs). Avec une adresse code sur n bits, il est possible de rfrencer 2n cases mmoire (dnit par la largeur du bus d'adresses). En plus de ces 2 bus, un boitier mmoire comporte une entre de commande (pour slectionner la lecture ou l'criture) et une entre de slection (pour la mise en hate impdance des entres/sorties du boitier). Une opration de lecture(resp. criture) suit le cycle d'instructions suivant : 1. slection de l'adresse, 2. choix de l'opration eectuer (R/W ),
4

les performances de la mmoire cache dpendent du taux de succs, en gnral 80 90%.

10

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

3. slection de la mmoire (CS = 0), 4. lecture (resp. criture) de la donne. Les circuits de mmoire ne sont pas tous identiques. La dirence se fait par leurs caractristiques dont les principales sont :

la capacit : c'est le nombre total de bits que contient la mmoire (exprim en Ko ou Mo), le format des donnes : largeur (en bits ou octets) du mot mmorisable, le temps d'accs : temps qui s'coule entre l'instant ou l'opration (R/W ) est lance l'instant o

la donne est eectivement disponible sur le bus de donnes. On parle alors d'accs direct et de temps d'accs constant (indpendant de l'adresse), le temps de cycle : intervalle minimal qui spare 2 demands successives de lecture (ou criture), le dbit : nombre maximum d'informations lues (ou crites) par secondes, la volatilit : elle caractrise la permanence des informations dans la mmoire (donne volatile si elle disparat lors d'absence d'alimentation, non volatile dans le cas contraire). Les critres de choix sont (principalement) la capacit, la vitesse, la consommation et le cot.

1.2.2.3 Mmoire vive : RAM Dnition 1.2 (RAM). Une mmoire vive (RAM : Random Access Memory) sert au stockage temporaire des donnes. Elle doit avoir un temps de cycle trs court pour ne pas ralentir le microprocesseur. s Ces mmoires sont en gnral volatiles et sont divises en 2 grandes familles : statiques et dynamiques. La mmoire statique (SRAM) est un composant dont chaque bit est constitu d'une bascule (contenant entre 4 et 6 transistors). Dans la mmoire dynamique (DRAM), l'information est mmorise sous forme d'une charge lectrique stocke dans un condensateur (transistor MOS), augmentant ainsi la capacit d'intgration et rduisant la consommation. Toutefois, l'inconvnient majeur rside dans l'obligation, pour les DRAM 5 , d'un rafrachissement priodique (pour compenser les courants de fuite du condensateur), ce qui impose une gestion plus complexe et un temps d'accs aux informations plus long. En gnral les DRAM sont utilises pour la mmoire centrale alors que les SRAM sont plus adaptes aux mmoires cache et aux registres. 1.2.2.4 Mmoire morte : ROM Dnition 1.3 (ROM). Pour certaines applications, il est ncessaire de pouvoir conserver des
informations de faon permanente mme lorsque l'alimentation est interrompue. On utilise alors des mmoires non volatiles appeles mmoires mortes (ROM : Read Only Memory). La seule opration possible est une opration de lecture. s L'opration d'criture (qui est possible) est appele programmation. La mthode peut varier selon le type de ROM :

ROM : elle est programme par constructeur, son contenu est non modiable. Sa densit d'intPROM : c'est une ROM programmable une seule fois par l'utilisateur et rapidement dont le cot
est relativement faible.
actuellement, on utilise une DDR-SDRAM qui a remplac la DRAM-EDO. Pour une mmoire DRAM, le temps d'accs est la somme de dlai de cycle et de temps de latence. Sur un ordinateur, le temps de cycle correspond l'inverse de la frquence de l'horloge (3GHz 0, 33ns). Les DRAM se connectent par des barrettes DIMM avec un temps de cycle de 15 ns (EDO), 7 ns (PC133), 5ns (DDR) et 0,66ns (QDR) soit de 2 45 cycles microprocesseur !
5

gration est leve et elle est trs rapide.

11

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

EPROM : c'est une ROM reprogrammable (mais entirement chaque reprogrammation) et sou-

vent (un millier de fois). L'criture est toutefois plus lente (environ 1000 ) que sur une RAM. EEPROM : c'est une EPROM amliore car elle est eaable lectriquement mot par mot. L'utilisation en RAM est trs lente et son cot de ralisation est relativement lev. FLASH EPROM : communment appele mmoire ash (cl USB, lecteur MP3, PDA, appareil photo numrique), c'est une EEPROM particulire base sur 2 technologies (NOR : cellules en parallle, bus d'adresse et de donnes ddis ou NAND : cellules en srie, interface d'E/S indirecte, implantation plus dense).

1.2.2.5 Hirarchie
Une mmoire  idale  serait une mmoire de grande capacit, capable de stocker un maximum d'informations et possdant un temps d'accs trs faible an de pouvoir travailler rapidement sur ces informations. Toutefois, les mmoires grande capacit sont lentes et les rapides sont chres ! C'est pourtant la vitesse d'accs de la mmoire qui conditionne grandement les performances globales d'un systme. En eet, malgr un processeur 3 GHz, une mmoire travaille environ 400 MHz. On n'a jamais besoin de toute les informations en mme temps, on utilisera donc les spcicits de chaque type de mmoire de manire optimiser les performances. On peut donc ainsi La hirarchie figure suivante schmatise cettela hirarchie des mmoires : dnir une des mmoires selon gure suivante :

cot registres cache mmoire centrale mmoire d'appui mmoire permanente : disque dur capacit disque optique bande magntique

gure 1.9:Figure Hirarchie mmoire 9 On utilise les mmoires de faible capacit (trs rapides) pour stocker des informations frquemI.3.eutiles Bus : au le squelette des ordinateurs ment microprocesseur tandis qu'on utilisera des mmoire grande capacit (plus lentes) pour les informations moins utilises par le microprocesseur. Ainsi, plus on s'loigne du microprocesseur, plus la capacit et le temps d'accs des mmoires augmenter. Un bus est un moyen de communication entre lesva diffrents lments constituant une

au bus Mmoires par des connecteurs, dont l'ensemble constitue un fond de panier. Chaque emplacement 1.2.3 Secondaires

machine. Il s'agit en gnral d'un ensemble de fils lectriques. Les diffrents lments sont relis

par exemple). On utilise alors des mmoires secondaires souvent appeles mmoire de masse en rapport avec la taille leve de leur capacit. il s'agit principalement des disques. 12

(slot) du fond de panier (backplane) peut recevoir une carte lectronique (board). Sur un bus Les besoins en capacit des mmoires augmentent considrablement (avec la taille des chiers circulent diffrents types de signaux : adresses, donnes, contrle, alimentations, etc

I.3.f Entres/Sorties

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

1.2.3.1 Disques magntiques


Un disque magntique est constitu de plusieurs plateaux circulaires empils et de plusieurs ttes de lecture/criture. On distingue 2 catgories de disques magntiques :

disque dur : plateau mtallique, tte de lecture lectromagntique ottante sur coussin d'air disque souple, disquette : plateau souple, tte en contact avec la surface.
Il existe deux dirents standards de disque dur : IDE et SCSI qui utilisent les bus et contrleurs d'interface du mme nom (voir chapitre 2). On peut aussi rajouter les disques RAID dont la technologie dire et fait appel au paralllisme. (disque Winchester),

gure 1.10: Exemple de disque dur D'un point de vue physique, les disques durs possdent une constitution particulire. Les plateaux tournent sous la tte vitesse constante. Une piste est une zone circulaire dlimite correspondant une rotation complte du plateau et sur laquelle sont enregistrs des squences de bits. Cette piste est divise en secteurs de taille xe (gnralement 512 octets). Plusieurs paramtres caractrisent les disques durs :  capacit (en Go),  temps de positionnement de la tte,  temps de latence : il dpend de la vitesse de rotation du plateau (3 4 ms pour des vitesses de 10800 7200 tr/mn),  dbit de pointe,  rapidit du contrleur de disque (interface IDE, SCSI ou ATA) et adaptation du protocole ainsi que la taille des caches (ou buers). La structure logique est aussi spcique. L'organisation en piste et secteurs est appele le formatage. Il s'eectue en 3 tapes : 1. le formatage de bas niveau permet d'organiser la surface du disque en lments simples (pistes et secteurs). Il est eectu en usine lors de la fabrication du disque ; 2. le partitionnement (fait par l'utilisateur), il permet, entre autre, plusieurs types de systmes d'exploitation d'utiliser le mme disque dur ou bien un seul systme d'exploitation d'utiliser 13

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

ce disque sous forme de plusieurs volumes ou plusieurs lecteurs logiques ; 3. le formatage de haut niveau (fait par l'utilisateur : FAT32, NTFS). Il reprsente une dirence de format et de gestion du placement des donnes donc des chiers.

Dnition 1.4 (Cluster et FAT). Un cluster correspond la zone minimale que peut occuper un

chier sur le disque dur et reprsente un ensemble de secteurs (de 1 16). La taille des clusters dpend du volume du disque dur et du choix de la FAT ( File Allocation Table). Le choix de la fat se fait par le systme d'exploitation choisi (win98 = fat32). s

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'units logiques avec leur taille ;  de la FAT et d'une copie de secours de cette FAT ;  le rpertoire racine avec le nom de volume ;  la zone de donnes (chiers et sous rpertoires).

Remarque 1.4 (taille maximale et fragmentation). Un disque dur format en FAT16 qui pos-

sde des clusters de 32 Ko peut adresser un volume de 2 Go (216 32Ko = 2Go) au maximum tandis qu'un formatage en FAT32 avec des clusters de 4 Ko peut adresser un volume de 17 To. Un petit chier de 12 Ko occupera la totalit du cluster. Dans ce cas la perte est de 20 Ko qui deviennent inutilisables. En FAT 32 le cluster ne fait plus que 4 Ko. Ainsi notre chier de 12 Ko utilise 3 clusters au lieu d'un mais il n'y aura pas de perte de capacit sur le disque dur. Cependant un chier de plusieurs Mo est invitablement dcoup en petits morceaux. L'ordinateur enregistre ces segment de donnes l o il y a de la place libre. Un programme peut ainsi tre dissmin sur tout le disque dur. C'est ce que l'on appelle la fragmentation. Celle-ci entrane une perte de vitesse de lecture due aux nombreux mouvements eectus par les ttes. C'est pour cela qu'il faut rgulirement eectuer une opration de dfragmentation qui va recoller cte cte les dirents clusters d'un mme programme de faon acclrer sa vitesse d'accs. Il faut noter que la plupart des disques actuels comporte une mmoire cache pour acclrer les accs. s Les disques souples sont tombs en dsutude (mme si on utilise encore des disquettes 3 pouces et demi). A cause du contact entre la tte de lecture et la surface, on doit faire face une usure prmature. Pour limiter cette usure, on rtracte la tte la n de chaque opration, provoquant ainsi une lenteur excessive d'accs. 14

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.2. Structure : composants principaux

1.2.3.2 Disques optiques


Le disque optique numrique rsulte du travail men par de nombreux constructeurs depuis 1970. La terminologie varie selon la technologie employe (CD, CD-ROM, CDR-CDRW, DVD, DVD-ROM, DVDRW, etc . . . )Le CD a t invent en 1981 (Sony, Philips) dans le but de fournir un support audio et vido de haute qualit.

Principe du CD-ROM

Un CR-ROM (Compact Disk ) est disque de 12 cm de diamtre compos de plusieurs couches superposes (plastique, mtallique et vernis). Le principe de lecture / criture utilise un rayon infrarouge d'une longueur d'onde de 780 nm qui parcourt la piste organise en spirale (contrairement au disque dur qui comporte plusieurs pistes). Lors de la lecture, le faisceau laser traverse la couche de plastique (polycarbonate) puis rencontre ou non un creux. Lors d'un passage devant un creux (resp. un plat), la lumire du laser est fortement rfracte (resp. rchie), de telle sorte que la quantit de lumire renvoye est minime, valeur binaire 0 (resp. importante, valeur binaire 1). Pour l'criture, le graveur, le laser utilis est 10 fois plus puissant et brle localement des plages (creux et bosses sont remplaces par des plages brles et non brles). Les caractristiques principales sont la vitesse maximale de lecture, de gravage et l'interface associ (IDE, SCSI ou SATA). Il existe dornavant des amliorations telles que le Burn Proof ou Just Link (suspension de ravure en l'absence de donnes dans le buer) et l'Overburning (dpassement lger de capacit).

Principe du DVD-ROM
Le DVD-ROM (Digital Versatile Disk ) est apparu en 1997 et est principalement ddi la vido. Il s'agit en fait d'un CD de capacit plus importante. La lecture / criture est eectue partir d'un laser rouge (650 et 635 nm) qui permet d'obtenir des creux plus petit, donc d'augmenter la quantit d'information. Les 2 longueurs d'ondes permettent une lecture / criture double couche. Un DVD (-RW / +RW) double couche et double face possde une capacit de 17 Go (soit 22 CD !).

1.2.3.3 Conclusion sur les mmoires


On peut s'orienter vers une hirarchie de l'ensemble des modes de stockage de la manire suivante :

gure 1.12: Hierarchie des mmoires 15

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

1.3 Echanges de donnes


1.3.1 Gnralits sur les communications
1.3.1.1 Aspects physiques : signaux et codages
Dans le cadre d'change entre plusieurs ordinateurs (rseau) ou bien entre ordinateurs et priphriques externes, il faut tout d'abord choisir le codage de l'information a transmettre. Le type de donnes peut tre de nature sonore, texte, graphique etc.. La reprsentation adopte peut tre analogique (variation d'un grandeur physique) ou numrique (codage binaire, NRZ, etc...). La transmission est caractrise par le sens des changes, le mode et la synchronisation (entre metteur et rcepteur). Lorsque un composant metteur dsire transfrer un bit vers un composant rcepteur, il place celuici sur la ligne de bus, le niveau de tension lectrique sur cette ligne traduisant la valeur du bit vhicul. Voici quelques exemples de codes NRZ (Non Retour Zro & RZ) :

gure 1.13: Exemples de codages Il existe aussi les codes biphases (Manchester) : le signal d'horloge et les donnes sont convolus. Il est important de vrier que les frquences se trouvent dans la bande passante (aaiblissement important lors du transport). Les codes NRZ et RZ possdent un inconvnient majeur : ils possdent un harmonique non ngligeable en 0 (composante qui passe mal au travers des quipements rseaux). Les signaux numriques ont aussi l'inconvnient de se dformer grande distance : on a alors un eet capacitif comme le montre la gure ci-dessous :

gure 1.14: Eet capacitif 16

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.3. Echanges de donnes

Pour les longues distances, on utilisera la modulation (voir lectronique). D'un point de vue lectronique, on distingue 2 modes principaux :

asymtrique : les tats logiques sont transmis sur la ligne par 2 niveaux de tension. Le plus utilis

travaille en logique ngative pour le 1 logique (exemple : RS 232). Les systmes bass sur ce mode sont sensibles aux bruits ( 20Kbit/s, 15 mtres maximum). symtrique (direntiel) : il s'agit d'un ampli-direntiel. Il n'est concern que par la dirence de tension (insensible aux bruits). Il autorise de grandes distances (1200 mtres) des vitesses leves (10 Mbit/s). Ces considration dpendent aussi du support (physique) de communication choisi. Les donnes circulent sous forme d'ondes (acoustiques, lectromagntiques, lectriques ou lumineuses). Les supports peuvent tre laires (cbles), ariens (ondes hertziennes) ou optiques (bre optique, laser). Ces support subissent videmment des perturbations qui peuvent tre de direntes natures :  parasites (bruit),  aaiblissement (perte en nergie dissipe dans la ligne) proportionnel la longueur et la frquence. Une caractristique essentielle est la bande passante (voir gure 1.15) qui reprsente l'intervalle de frquence sur lequel le signal ne subit pas un aaiblissement trop grand (suprieur 3dB en gnral).  distorsion (dphasage).  etc . . .

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

1.3.1.2 Rapidit et taux de transfert


Il existe 2 units pour qualier la rapidit des changes : 1. Bauds : nombre de bits de donnes transmis par seconde. 2. Bits/sec : nombres de bits (quelconques) transmis par seconde. La vitesse de transfert eective (aussi appel taux d'utilisation eectif) est calcule sur les donnes (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 vnement (00=-15 V, 01=-5 V, 10=+5 V, 11=+15 V), dans ce cas le transfert en bit/s est double de celui en bauds.

1.3.1.3 Modes de transmission simplex Les donnes circulent dans un seul sens : metteur vers rcepteur (ex : ordinateur
imprimante, souris ordinateur, radio, tlvision). half-duplex Les donnes circulent dans les 2 sens mais pas simultanment : la bande passante est utilise en intgralit (aussi appel alternat ou semi-duplex). Exemples : talkie/walkies, tres humains (on ne coupe pas la parole). 17

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

full-duplex Les donnes circulent de manire bidirectionnelle et simultanment : la bande passante

est divise par 2 pour chaque sens (duplex intgral) sauf en cas de multiplexage frquentiel (technique avec 2 bandes passantes de frquences).

gure 1.16: Modes de transmission : simplex et duplex Lors d'une communication, les bits peuvent tre vhiculs (par un bus ou sur un port) de deux manires direntes :

srie : les bits sont transmis les uns la suite des autres, sur une seule et mme ligne, parallle : les bits sont vhiculs sur plusieurs lignes disposes en parallle.

gure 1.17: Liaisons srie et parallle A premire vue, le bus parallle peut sembler plus performant que le bus srie. Cependant un bus parallle peine plus dicilement qu'un bus srie supporter de hautes frquences de fonctionnement. Les frquences de fonctionnement des bus tant de plus en plus leves, la transmission srie est en ce moment trs en vogue, comme l'attestent l'USB, le serial ATA ou le Firewire. Dans une communication srie , un seul l transporte l'information. Il y a donc un problme de synchronisation entre metteur et rcepteur (il faut pouvoir distinguer et reconnatre les squences de bits utiles). Deux types de transmission remdient ce problme :

synchrone : l'metteur et le rcepteur sont cadencs la mme frquence d'horloge (incorpor au

bus ou bien aux donnes). Les horloges de rception et d'mission doivent mettre le mme signal d'horloge (pour la synchronisation). Le matriel le plus lent impose donc le rythme des communications. On parle alors de transmission oriente message. Le temps qui spare l'envoi de 2 messages doit tre un multiple de la dure d'un bit. Le message commence par un ou plusieurs caractres de synchronisation puis la totalit des donnes. Il n'y a pas de contrle d'erreurs (overrun ou underrun). Pour exemples, les modes BSC ou HDLC (High level Data

18

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.3. Echanges de donnes

Link Control). Le mode synchrone est adapt aux donnes volumineuses et aux ncessits de transmission rapide (le ot de bits est rparti en trames prcdes d'un motif particulier, la synchronisation).

gure 1.18: Transmission synchrone

asynchrone : la transmission a lieu caractre par caractre, le temps entre deux caractres (2

blocs de bits) n'tant pas dni. Chaque caractre est prcd d'un STARTbit et suivi d'un ou deux STOPbits, ce qui signie que, en ASCII (tendu), il faudra 10 11 bits par caractre. L'avantage des transmissions asynchrones rside dans la simplicit de la mthode (le caractre est envoy ds que la touche est appuye). La synchronisation est donc impose par le protocole. On parle de transmission oriente caractre.

gure 1.19: Transmission asynchrone

1.3.1.4 Erreurs de communication


Il est essentiel de pouvoir dtecter et (ventuellement) corriger les erreurs de transmission. Plusieurs techniques existent. Parmi celles-ci, on peut citer : parit : il s'agit de bit(s) ajout(s) l'information pour en vrier l'intgrit. Lorsque l'on parle de caractres, la parit (horizontale : LRC) peut tre paire (le nombre total de bits 1, bit de parit inclus, doit tre pair) ou impaire (nombre total de bit impair), ou force un, ou nulle. La vrication de la parit peut tre utile lorsque l'on transmet de l'information haute vitesse ou sur des lignes de qualit mdiocre. Cette mthode simpliste ne permet pas de dtecter 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 amliorer cette dtection on peut combiner les parits horizontales et verticales (Checksum). CRC : Code (polynmial) de Redondance Cyclique (Cyclic Redundancy Check ). Il est utilis pour se prmunir contre les pertes d'informations ou leur altration en crant une redondance limite permettant de garantir la non-altration du message. On vrie la concordance avec un polynme gnrateur de degr 5 ou 16, voire 24 (5, 16 ou 24 bits). 19

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

1.3.1.5 Notion de protocole


Il s'agit de la mme notion que la langue dans le language humain. Ce sont des rgles strictes, dnissant les questions et les rponses devant avoir lieu lorsque deux quipements sont en communication. Ces rgles prvoient des procdures de rcupration en cas d'erreur de transmission ou de timeout (rponse non parvenue dans les dlais). Le protocole doit tre connu tant de l'metteur que du rcepteur pour permettre une bonne communication.

1.3.2 Bus
1.3.2.1 Gnralits
Un ordinateur comprend 3 composants fondamentaux :  le processeur,  la mmoire (principale et secondaire),  les unit d'entres/sorties auxquelles sont raccords divers priphriques. Les bus permettent de raccorder entre eux ces divers lments et de rguler les communications.

gure 1.20: Schma simpli d'un micro-ordinateur

Dnition 1.5 (BUS). On dsigne par BUS un conducteur servant de canal de transmission com-

mun entre plusieurs circuits qui peuvent s'y connecter la demande, soit en tant qu'metteurs, soit en tant que rcepteur ou les deux. s Dnition 1.6 (PORT). Dans le cas o la ligne sert uniquement la communication entre deux composants matriels, on parle de PORT. s

1.3.2.2 Caractristiques
Les caractristiques dtailles des divers bus seront dcrites dans le prochain chapitre.

1.3.3 Techniques d'change de donnes


1.3.3.1 Echanges programms
En mode programm, l'intgralit du protocole de transfert ct processeur est mis en oeuvre par l'excution d'un programme dont la structure est la suivante (pour une entre de donne provoque par l'unit priphrique et utilisant un protocole de poigne de main (handshaking)) :  attendre (donne disponible), 20

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.3. Echanges de donnes

 consommer la donne  signaler (donne acquise), La consommation de la donne se rduit le plus souvent sa lecture dans le port de donne et son rangement en mmoire.  Scrutation ( polling ) : le microprocesseur interroge l'interface pour savoir si des donnes sont parvenues et doivent tre traites. Dans le cas contraire, il attend. Ce mode ralentit normment les communications. En eet, le microprocesseur est monopolis en permanence par l'interface et se retrouve souvent en phase d'attente. Cette technique n'est utilisable que si l'attente est courte (l'attente tant active, elle empche le processeur de faire autre chose). Elle convient donc pour les priphriques rapides qui transfrent les informations par blocs (cran ou disques). Elle est exclure dans le cas des priphriques lents (clavier, imprimante,. . . ) car le taux d'utilisation eectif du processeur serait trs faible. En eet, dans le programme d'acquisition du bloc, l'essentiel du temps serait pass dans fonction attendre (donne disponible).  Interruption ( interrupt ) : une interruption est un signal, gnralement asynchrone au programme en cours. Le microprocesseur possde une ou plusieurs entres rserves cet eet. Le processeur n'attend pas la disponibilit de la donne, il peut mettre prot cette priode pour excuter un autre programme. Deux tches (ou processus) s'excutent en parallle :  la tche d'change chaque fois que l'unit priphrique est prte fournir ou recevoir une donne,  la tche principale le reste du temps. Le processeur excute sa tche principale. Ds que l'unit priphrique est prte pour un transfert, elle envoie un signal qui engendre une demande d'interruption, en agissant sur la ligne interruption du processeur. Par un mcanisme de commutation de tche, la tche principale est interrompue et le contrle passe la procdure d'interruption. Celleci eectue le transfert de la donne et redonne le contrle la tche principale. Ce transfert par interruption se rpte chaque fois que l'unit priphrique est prte. Cette technique convient au transfert de donnes avec des priphriques lents (imprimantes lentes, . . . ) car les intervalles de temps entre deux transferts conscutifs sont mis prot pour faire avancer la tche principale, non prioritaire. Cette technique est videmment la seule utilisable dans le cas o le processeur doit ragir des vnements imprvisibles, ce qui est le cas des transferts de donnes par caractres (clavier, souris, . . . ).

1.3.3.2 Echange direct avec la mmoire : DMA


Les E/S gres par interruption, bien que plus ecaces que les simples E/S programmes, demandent une intervention active du processeur pour transfrer des donnes entre la mmoire et les modules d'E/S. En fait, tout transfert de donnes doit passer par le processeur. Par consquent, ces deux formes d'E/S sourent de deux inconvnients : 1. le dbit de transfert d'E/S est limit par la vitesse laquelle le processeur teste et sert le priphrique, 2. le processeur est occup grer chaque transfert d'E/S, ce qui demande l'excution d'un certain nombre d'instructions. Pour transfrer d'importants volumes de donnes, il faut employer une technique plus ecace : le DMA (Direct Memory Access). 21

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

gure 1.21: Principe du DMA

Le principe du DMA consiste dcharger le processeur des oprations d'E/S et les coner un contrleur qui se charge d'accder la mmoire la demande des priphriques. En eet, un contrleur de priphrique n'est gnralement pas assez sophistiqu pour tre capable de devenir matre du bus systme. Le DMA implique donc la prsence d'un module supplmentaire sur le bus systme : le contrleur DMA. Il est capable d'imiter le processeur et de s'octroyer le contrle du bus. Un contrleur de DMA est constitu d'un registre d'adresse, d'un registre de donne, d'un compteur et d'une logique de commande. Il se charge du transfert de donnes mais le microprocesseur doit tout de mme assurer quelques tches :  initialiser l'change en donnant au contrleur de DMA l'identication du priphrique 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 dure du transfert, le microprocesseur est libre d'eectuer un traitement quelconque. La seule contrainte est un limitation de ses propres accs mmoire. Deux modes sont possibles selon la nature des blocs de donnes transfrer : 1. Vol de cycle (cycle stealing ) : pour des dbits peu levs ( 1Mo/s). Comme son nom l'indique, le principe consiste voler un cycle bus au processeur chaque fois qu'une donne priphrique est prte tre transfre. Le contrleur DMA relche le bus entre deux transferts conscutifs, cet intervalle permettant au processeur de faire plusieurs accs en mmoire (entrelacement des cycles bus pilots par le contrleur DMA et par le processeur). 2. Rafale (burst ) pour les dbits levs, comparables aux dbits entre mmoire et processeur. Le contrleur DMA devient matre du bus mais ne le libre que lorsque tout le bloc a t transfr. Cette technique est beaucoup plus rapide que le transfert en mode programm, toutes les oprations tant faites par matriel. Le transfert du bloc de donnes se fait par une rafale de cycles bus contrls par le contrleur DMA, sans entrelacement avec des cycles bus pilots par le processeur. Les dbits peuvent tre trs levs car il n'y a pas de surcot de prise et de libration de bus entre deux transferts conscutifs. Voici une liste de certains des dispositifs qui utilisent le contrleur DMA :  Lecteur de disquettes,  Disque dur,  Lecteur et graveur CDROM,  Contrleurs SCSI et PCI,  Carte son,  Carte graphique. Plus il y a de dispositifs utilisant le contrleur DMA, moins le processeur sera sollicit, librant donc sa puissance en lui permettant de se concentrer sur d'autres tches importantes. 22

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.4. Systme d'exploitation

1.4 Systme d'exploitation


1.4.1 Gnralits
1.1. Un systme d'exploitation correspond la premire couche logicielle d'un ordinateur (voir gure Il s'agit du programme qui permet d'accder aux ressources matrielles d'un ordinateur. Le systme d'exploitation doit s'occuper de :  l 'excution des commandes d'entre/ sortie,  la gestion de la mmoire,  la gestion des chiers,  la multi- programmation (multi- tche) :  excuter plusieurs programmes la fois,  accs simultans (exemple : imprimante),  changes d'informations,  excution d'un seul programme avec plusieurs processeurs.  la scurit (gestion des accs, . . . )

gure 1.22: Quelques rles d'un systme 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 systmes d'exploitation :  MSDOS (Microsoft Disk Operating System) : ce n'est pas un SE au sens strict. Il s'agit plutt d'une interface de gestion de disques et disquettes trs sommaire. Il n'est plus prsent dans Windows XP ;  Windows : Il s'agi d'une interface base de multifentrage btie (initialement) sur MSDOS. Monoutilisateur, monotche et sans gestion correcte de la mmoire, il est (relativement) peu performant (architecture monolithique, crits en assembleur, et troitement lis au matriel donc peu ou pas du tout portable). Son succs est surtout d sa capacit de lier (vrouiller) le 23

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

fonctionnement des applications Microsoft, de Windows, et l'architecture matrielle (stratgie du march captif, marketing) ;  MacOS : c'est un SE monoutilisateur, multitche, intgrant une interface base de multifentrage, mais avec une gestion de la mmoire qui commence tre acceptable (presque natif) ;  VM, MVS, VMS, Unix, OS/2 : ce sont des SE, multiutilisateurs et multitches. Unix (donc Solaris ou Linux) est une grande famille de SE actuellement en pleine volution ( temps partag, multiutilisateur, architecture modulaire, majoritairement crit en langage volu (langage C) et indpendant de l'architecture matrielle de l'ordinateur donc portable). Les autres sont des branches mortes.

1.4.2 Les critres de choix


Les critres qui permettent de caractriser l'adquation du systme au mode de fonctionnement dsir, et donc d'induire les choix lors de la conception du systme peuvent s'noncer de la faon suivante :  Le temps de traitement d'une commande ;  Le temps de rponse (dlai qui spare l'envoi de la commande par le demandeur, de la n d'excution de la commande) ;  Le dbit (throughput) est le nombre de commandes qui sont excutes par unit de temps (mesure de l'ecacit de l'ensemble du systme, matriel et logiciel, qui permet notamment de calculer la rentabilit du systme, tous utilisateurs confondus) ;  Les moments d'arrive des commandes dterminent la faon dont les commandes sont demandes au systme (caractristique utilisateur) ;  Le mode de communication entre le demandeur et l'ordinateur impose des contraintes supplmentaires sur le systme, ds que l'on dsire introduire une distance entre les deux (protocole) ;  La nature du partage des ressources entre les demandeurs. Concernant les PC et Windows, il existe de multiples congurations matrielles. Les instructions eectuer par le SE sont donc de natures direntes. Ainsi, le SE est divis en plusieurs couches comme on l'a vu prcdemment (voir gure 1.22) :  la couche basse est responsable du matriel : BIOS ;  les couches plus hautes sont charges des fonctions plus volues : DOS par exemple.

1.4.3 BIOS
1.4.3.1 Gnralits Dnition 1.7 (BIOS). Le BIOS (Basic Input Output System) constitue la couche basse de tous
les systmes d'exploitations sur PC. Il s'agit d'un programme stock sur la carte mre dont une partie est dans une ROM, et une autre dans une EEPROM (on peut asher cette partie du BIOS). s Lorsque le systme est mis sous tension (ou ramorc), le BIOS fait l'inventaire du matriel prsent dans l'ordinateur et eectue un test nomm POST (Power On Self Test) an de vrier son bon fonctionnement. Le BIOS eectue (entre autres) :  un test du CPU,  une vrication de la RAM et de la mmoire cache,  une initialisation du timer (l'horloge interne),  une initialisation du contrleur DMA,  une installation de toutes les fonctions du BIOS.
24

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.4. Systme d'exploitation

Chaque modle de PC est vendu avec une version du BIOS adapt sa conguration matrielle (le plus frquent est l'AMI BIOS). La plupart des BIOS ont un SETUP (programme de conguration) qui permet de modier la conguration basique du systme. Ce type d'information est stock dans une RAM auto-alimente an que l'information soit conserve mme lorsque le systme est hors-tension. Il existe de nombreux BIOS dans votre machine :  Le BIOS de la carte-mre qui va tre dtaill,  Le BIOS qui contrle le clavier,  Le BIOS de la carte vido,  (facultatif) Le BIOS de contrleurs SCSI qui permettent de booter sur un priphrique SCSI,  Le BIOS de cartes rseau qui permettent de booter sur le rseau,  etc . . .

1.4.3.2 Fonctions du BIOS


Du point de vue de l'utilisation, on peut considrer le BIOS comme une librairie de fonctions. Chaque fonction eectue une tche bien prcise, comme par exemple, acher un caractre sur l'cran. L'appel de l'une de ces fonctions constitue un appel systme. On pourrait envisager que les fonctions du BIOS soient simplement des procdures, que l'on appellerait classiquement en passant les paramtres ncessaires. Ce n'est pas le cas car le mcanisme d'appel est dirent. En eet, il a t prvu de pouvoir modier le comportement du BIOS en cours d'utilisation, par exemple pour grer un nouveau priphrique ou pour modier la gestion d'un priphrique existant. Or le code du BIOS tant en mmoire morte, il n'est pas modiable. De plus, le BIOS tant dirent d'un ordinateur l'autre, les adresses des fonctions changent.

Exemple : fonction du BIOS


soit la fonction du BIOS achant un caractre (donn par son code ASCII) sur l'cran. Supposons que sur un PC, la premire instruction de cette fonction soit l'adresse F123 4560 H. Sur le modle d'une autre marque, cette mme fonction pourrait tre implante l'adresse F123 4550 H. Comment la fonction d'achage est-elle gre ?

1.4.3.3 Vecteurs d'interruptions du BIOS


Le problme est rsolu par l'utilisation d'une table d'indirection, la table des vecteurs d'interruptions (IVT : Interrupt Vector Table). Cette table est place en mmoire principale (RAM), et contient les adresses des fonctions du BIOS. Elle est implante partir de l'adresse 0000 0000 H (premire case mmoire) et est initialise par le BIOS au moment du dmarrage du PC (boot). Chaque lment de la table occupe 4 octets (adresse sur 32 bits). La deuxime fonction du BIOS se situe donc en 0000 0004. La table possde 256 lments (vecteurs) et occupe donc 1 Ko. Dans l'exemple prcdent, si l'on sait que la fonction d'achage du BIOS est la 33me fonction, on va l'appeler en appelant le 33me vecteur qui contient l'adresse de la 1re instruction du programme grant l'achage. 25

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

adresse

contenu

...
0084

...
F123 4560

...

...

tableau 1.1: Exemple : 33me vecteur d'interruption

Une adresse contient 4 octets. La 33me interruption est accessible l'adresse 4x33=132D soit 84H. La table des vecteurs d'interruptions contient des valeurs direntes pour chaque version de BIOS, et peut tre modie pour pointer sur du code en mmoire principale, modiant alors le BIOS existant.

1.4.3.4 Appel systme : instruction INT n

En langage C, l'instruction INT n permet d'appeler la n-ime fonction de la table des vecteurs d'interruptions. n est un entier compris entre 0 et 255 (1 octet) car il y a 256 vecteurs d'interruptions dans la table. En utilisant l'instruction INT n, l'adresse de destination est donne par la table des vecteurs d'interruptions et les indicateurs d'tat sont automatiquement sauvegards dans la pile. L'adresse de retour au programme principal complte (32 bits) est galement empile. Le droulement de INT n se passe comme suit :  Sauvegarde des indicateurs du registre d'tat sur la pile (les indicateurs sont regroups dans un mot de 16 bits),  Sauvegarde des variables,  Sauvegarde de l'adresse de retour au programme principal. L'excution continue donc au dbut du programme interruption. Un programme interruption est donc un sous-programme appel par la table des vecteurs d'interruption et accessible par l'instruction INT n. A l'issu de l'excution du sous-programme d'interruption, tous les indicateurs sont restaurs leur anciennes valeurs, sauvegards initialement sur la pile par INT n. Notons que les ventuels paramtres du sous-programme d'interruption sont toujours passs par registre. 26

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

1.4. Systme d'exploitation

1.4.3.5 Quelques fonction du BIOS


INT 0x00 0x05 0x10 Fonction division par 0 copie d'cran cran Gestion des modes vido fonction 0x00 : initialisation mode graphique fonction 0x01 : eacement curseur texte fonction 0x02 : positionnement du curseur Caractristiques appele automatiquement lors d'une division par 0

0x12 0x13

taille mmoire gestion disque dur Initialiser, lire et crire secteurs fonction 0x02 : lecture de donnes sur un disque fonction 0x05 : formatage piste interface srie clavier reboot gestion DOS Lire caractre, tat du clavier fonction 0x00 : lecture carcatre au clavier Lancement du systme fonction fonction fonction fonction fonction fonction fonction fonction fonction 0x05 : imprimer caractre 0x2A : lire date systme 0x2C : lire heure systme 0x31 : laisser programme en rsident 0x36 : dterminer capacit rsiduelle disque 0x39 : crer sous-rpertoire 0x3D : ouvrir un chier 0x3F : lire un chier 0x4C : terminer un programme

0x14 0x16 0x19 0x21

tableau 1.2: Quelques fonctions du BIOS

1.4.4 DOS
Le systme DOS (Disk Operating System), est un systme d'exploitation et (donc), contrle les activits de l'ordinateur. Le rle du DOS est d'interprter les commandes saisies au clavier par l'utilisateur. Ces commandes permettent d'eectuer les tches suivantes :  Gestion des chiers et des rpertoires,  Mise jour des disques,  Conguration du matriel,  Optimisation de la mmoire,  Excution des programmes. Ces commandes sont tapes 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 systme DOS repose sur le BIOS dont il appelle les fonctions pour interagir avec le matriel. 27

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 1. Architecture - Principes Gnraux

Les fonctions du DOS s'utilisent comme celles du BIOS via des vecteurs d'interruptions. Elles orent des fonctionnalits de plus haut niveau que le BIOS (entres/sorties, ouverture de chiers sur disque, etc.). Les fonctions du DOS s'appellent toutes l'aide du vecteur 21H. La valeur du registre AH permet d'indiquer quelle est la fonction que l'on appelle. MOV AH, numro de fonction INT 21H Voici titre d'exemple quelques fonctions du DOS accessibles par int 21H : numro 0x01 0x02 0x19 0x0A 0x0B 0x25 0x31 0x35 0x3C Fonction lecture caractre ache caractre ache string saisie string lecture tat clavier remplissage vecteur interruption fermeture programme rsident lecture vecteur interruption cration chier AL=1 si caractre (0 sinon) Caractristiques met le code ASCII lu dans AL code ASCII dans registre DL DX = adresse dbut string (pointeur)

tableau 1.3: Quelques fonctions du DOS

28

Chapitre 2

Les Bus
Sommaire
2.1 2.2 2.3 2.4 2.5 2.6 Caractristiques gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Bus processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Bus d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Bus de priphriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Bus embarqus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Rcapitulatif des principales caractristiques des divers Bus . . . . . . 42

2.1 Caractristiques gnrales


On appelle Chipset l'lment charg d'aiguiller les informations entre les dirents bus de l'ordinateur an de permettre tous les lments constitutifs de l'ordinateur de communiquer entre eux. Il est trs souvent compos de deux lments principaux :  Le NorthBridge est charg de contrler les changes entre le processeur et la mmoire vive, c'est la raison pour laquelle il est situ gographiquement proche du processeur. Il est parfois appel GMCH (Graphic and Memory Controller Hub).  Le SouthBridge appel galement contrleur d'entre/sortie (ou contrleur d'extension) gre les communications avec les priphriques d'entre/sortie. Il est galement appel ICH (I/O Controller Hub). On admet gnralement l'abus de langage bridge pour dsigner un lment d'interconnexion entre deux bus. 29

Le SouthBridge (Pont Sud ou Southern Bridge appel galement contrleur dentreou contrleur dextension) gre les communications avec les priphriques CM_InfoIndus:version dusortie mardi 29 novembre 2005 2 h 17

Chapitre 2. Les BusOn parle gnralement de bridge (en franais pont) pour dsigner un lment dinterconnexion entre deux bus.

dentre-sortie. Le pont sud est galement appel ICH (I/O Controller Hub).

Processeur

Bus processeur

Cache de niveau 2

AGP Bus AGP North Bridge RAM Bus mmoire Bus PCI

South Bridge

LAN

SCSI

ISA

USB

IDE

Fig. 4.3 Organisation dun ordinateur moderne gure classique 2.1: Les ponts

Dans le cas particulier ou plusieurs priphriques communiquent, il faudra grer (avec des rgles) cette communication. En plus d'avoir une architecture et une connectique particulire, il est ncesIl est intressant de noter que, pour communiquer, deux bus ont besoin davoir la saire d'y associer un protocole L'ensemble de ces oprations est assur par le  contrmme largeur. Celad'change. explique pourquoi les barrettes de mmoire vive doivent parfois tre apparies sur certains systmes (par exemple sur les premiers Pentium, dont la largeur du leur d'entre/sortie. bus processeur tait de 64 bits, il tait ncessaire dinstaller des barrettes mmoire dune largeur de 32 bits par Dnition 2.1 (Contrleur depaire). Bus). Il est aussi nomm Interface d'entre/sortie. Son rle est de :  connecter le priphrique au bus de donnes,  grer les changes entre le microprocesseur et le(s) priphrique(s) (mise en mmoire tampon des donnes, dtection d'erreurs, grer la prise de contrle et le squencement du bus, . . . ). Il assure donc une bonne communication entre le(s) priphrique(s) et le systme. s Lorsqu'un priphrique (ou un programme) sollicite des donnes, il transmet sa demande au contrleur. Celui-ci reconstruit les donnes partir de la trame (ot de bits en srie) et du protocole adopt puis les transmet la mmoire et au processeur (facultatif dans le cas de DMA). Le bus sert aussi bien au processeur qu'au contrleur lorsqu'ils dialoguent avec la mmoire. Si le processeur et le contrleur souhaitent utiliser simultanment le bus, il est ncessaire de procder un arbitrage pour dcider qui va en prendre le contrle et devenir ainsi le matre du bus. Chaque protocole possde une (ou plusieurs) mthode(s) d'arbitrage particulire qui seront vues plus en dtail ultrieurement. Les contrleurs possdent tous une architecture qui se dcompose de la manire suivante :  un registre de commande : le processeur y dcrit le travail eectuer (sens du transfert, mode du transfert),  un (ou plusieurs) registre(s) de donnes : il(s) contien(nen)t les mots changer entre le processeur et la mmoire,  un registre d'tat : il indique si l'unit d'change est prte, si l'change s'est bien droul. Les bus possdent aussi une architecture interne du type :  bus (lignes) d'adresses : liaison bidirectionnelle qui permet la slection (adressage) des informations traiter dans un emplacement mmoire, 30

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.1. Caractristiques gnrales

 bus (lignes) de donnes : liaison bidirectionnelle qui assure le transfert des informations (lecture ou criture) entre un lment et un autre,  bus (lignes) de commandes : liaison pour assurer la synchronisation des ux d'informations sur les bus de donnes et d'adresses. Les signaux de commandes que l'on peut rencontrer sont l'horloge (clock, les signaux de demandes d'interruption et d'accord (acknowledge), les signaux d'arbitrage des changes, le contrle des changes (read/write, type de transfert, types des donnes) etc... Les caractristiques physiques principales des bus sont :  largeur bus d'adresse (en bits) : conditionne l'espace mmoire adressable,  largeur 6 bus de donnes (en bits) : conditionne le nombre d'accs ncessaires pour transporter une donne,  vitesse d'horloge : dtermine le dbit des communications,  multiplexage : les mmes lignes physiques sont utilises pour transporter des informations direntes (dans le but vident de rduire le nombre de lignes des bus et donc les cots de fabrication, des mthodes ont rapidement t mises au point an de faire transiter plusieurs bits simultanment sur une mme ligne. Ces techniques, regroupes sous le terme gnrique de multiplexage recourent, chaque extrmit du bus, des multiplexeurs. Le plus utilis est le multiplexage temporel o le multiplexeur se charge de rceptionner les direntes communications transmettre et d'attribuer chacune de cellesci des intervalles de temps de transmission. A l'autre bout du bus, un autre multiplexeur se charge de recomposer les direntes communications),  temps de latence : cart de temps entre le dbut d'une opration sur le bus (lecture ou criture) et lorsque les donnes sont eectivement prtes tre utilises.  mthode d'arbitrage : dcider qui va prendre le contrle (la main ) du bus donc devenir le matre (dans le cas de bus multi-matres)et possder ainsi la possibilit d'accs en DMA,  Hot Swap : raccordement de nouveaux priphriques sans arrt de la machine,  Plug and Play : reconnaissance des units d'change sans reconguration des adresses d'E/S et d'Interruption. Un moyen d'valuer les performances d'un bus est de dterminer, en fonction de sa largeur (en bits) et de sa frquence (en cycles/s), son taux de transfert maximal thorique (ou son dbit) (en Mo/s) de la manire suivante :

T xT (M o/s) =
.

f rquencebus largeur 8 10242

Exemple : bus PCI


Considrons le cas d'un bus PCI 32 bits 66M hz . En appliquant la formule prcdente, on obtient un taux de transfert (maximal) thorique de :

T xT =

66 32 = 253, 7 (M o/s) 8.1024.1024

Ce dbit calcul est en eet trs thorique : il faudrait, pour qu'il soit eectif, que le bus fonctionne en permanence et plein rgime, ce qui s'avre plutt rare, et mme physiquement impossible tant
Cette largeur du bus ne mesure en fait que les lignes vhiculant les donnes utiles. En ralit, des lignes supplmentaires sont ncessaires an de transmettre des signaux de contrle, d'alimentation ou de synchronisation des transferts. Par consquent, un bus parallle de 8 bits (par exemple) sera bel et bien constitu de 8 lignes ddies aux donnes transfrer, mais auxquelles s'ajoutera un nombre variable de lignes dites administratives. De mme, un bus de type srie ne sera pas rduit une seule ligne.
6

31

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

donn les invitables temps morts engendrs par la gestion administrative du bus. Bien videmment, ce dbit quantie a lui seul l'ecacit d'un bus, mais cette valeur dpend de plusieurs paramtres physiques du bus : sa largeur, sa frquence de fonctionnement et, de manire moins vidente, son mode de fonctionnement. On parle galement parfois de bande passante pour dnir le dbit d'un bus, mais de manire trs 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, ncessite plus de courant),  augmenter la vitesse d'horloge (pb : tous les priphriques ne sont pas forcment capables de supporter),  dcouper les transactions en paquets de donnes (split transaction),  modier les amplitudes des signaux lectriques.  etc . . . Il existe plusieurs possibilits pour tablir une classication des bus :  selon le type de priphriques connects :  bus systme (system) aussi communment appel bus local : c'est celui qui se connecte directement au processeur (il possde maintenant une mmoire cache). Il est multi-processeurs. Le transfert des donnes entre un bus systme et les autres bus se fait via un pont (bridge) et est gr par une puce systme (system chipset)  priphrique interne (backplane) ou bus d'extension : ce type de bus est situ sur la carte mre et les priphriques internes y sont connects via des  slots . Il forme un canal grande vitesse entre la mmoire et les divers priphriques (gnralement parallle donc large, court en distance et rapide avec une grande bande passante,  bus de priphrique externe (peripheral) : ce type de bus sert connecter des priphriques externes avec la mmoire interne. Il ne possde gnralement pas une bande passante aussi rapide que le backplane bus. Il supporte gnralement une grande gamme de vitesse, peut tre srie ou parallle, grande distance et de temps de latence trs varis.  par la nature de ses liaisons : parallle ou srie,  par le cadencement de ses changes : synchrone ou asynchrone.

2.2 Bus processeur


Il est aussi appel bus systme. C'est le type de bus le plus rapides. En eet, c'est celui sur lequel sont directement connects le processeur et la mmoire. Ce bus permet au processeur de communiquer avec la mmoire centrale du systme (mmoire vive ou RAM). Il est luimme subdivis en deux bus :  le bus d'adresse (ou bus mmoire) : il transporte les adresses mmoire auxquelles le processeur souhaite accder pour lire ou crire une donne.  le bus de donnes (ou bus frontal, FSB pour Front Side Bus) : il vhicule les informations en provenance ou destination du processeur.

2.2.1 Bus de donnes interne


Par bus de donnes interne, il faut comprendre interne au processeur. Il est vrai que ce bus de donnes interne n'en est pas vraiment un puisqu'il ne relie pas le processeur un autre composant, mais interconnecte entre elles les direntes zones actives l'intrieur mme du processeur . En dpit des apparences, le processeur n'est pas un bloc monolithique de silicium brut. Il se compose en fait de nombreuses zones fonctionnelles appeles registres, dcodeursquenceur, UAL ou autre 32

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.2. Bus processeur

FPU (Flotting Point Unit) qui s'changent les donnes en cours de traitement au fur et mesure de leur stade d'excution via ce bus de donnes interne. Comme ce bus est destin faire transiter les donnes reues depuis l'extrieur, sa largeur correspond gnralement celle du bus de donnes externe, c'estdire du bus systme. Plus surprenant, et trs important, la frquence de fonctionnement de ce bus s'avre trs suprieure la frquence du bus processeur, et ceci grce un dispositif particulier dnomm multiplicateur d'horloge qui permet au processeur de fonctionner en interne une frquence multiple de la frquence dlivre par la carte mre.

2.2.2 Bus frontal, de donnes externes


Trs souvent lorsque l'on voque le bus processeur, on fait en ralit rfrence ce bus essentiel que l'on appelle au choix bus de donnes ou bus frontal FSB (pour Front Side Bus). Son rle est de vhiculer les donnes entre le processeur et le monde extrieur, que ce soit la mmoire vive ou les dirents priphriques internes de l'ordinateur.

2.2.2.1 Caractristiques du bus frontal


La largeur du bus frontal est relativement immuable puisque depuis l'avnement du processeur Intel Pentium, celleci stagne 64 bits. La frquence de fonctionnement de ce bus frontal n'a pas la mme constance puisque celleci se calque trs exactement sur la frquence de fonctionnement de la carte mre, celleci ayant rgulirement augment au gr de ses dirents modles (voir tableau 2.1). Le bus de donnes est un bus trs rapide. Si rapide d'ailleurs que, longtemps durant, aucun des priphriques de l'ordinateur ne pouvait suivre son rythme infernal. Il en rsultait pour le processeurs de longues priodes d'attente entre deux sollicitations ces derniers (y compris la mmoire pourtant hypersollicite). Les progrs technologiques aidant, certains priphriques (notamment la carte graphique) et la mmoire se sont rvls de plus en plus vloces, au point que le bus processeur soit sous la menace de l'engorgement. Direntes solutions furent donc tudies an de doper un peu plus ses performances. Pendant trs longtemps, la frquence du FSB a t gale la frquence de la carte mre. A cette poque donc, chacun des cycles du signal d'horloge permettait en thorie un transfert de donnes entre le processeur et la carte mre. Avec son processeur Athlon, la socit AMD inaugura son bus EV6. Ct frquence brute de fonctionnement, ce bus n'innovait pas vraiment puisque limit dans un premier temps 100 MHz, mais cette nouvelle technologie ne permettait plus seulement un transfert de donnes par cycle d'horloge, mais deux ! D'o le qualicatif de DDR (Double Data Rate ) donn au procd qui permet en consquence de doubler le dbit du bus, alors que sa frquence relle de fonctionnement demeure la mme. La parade Intel fut baptise architecture Netburst et fut intgre au processeur Pentium 4 : la frquence est quadruple grce un bus dit quadpumped (QDR : Quad Data Rate ). Avec son trs rcent processeur Athlon64, AMD remplace le traditionnel bus processeur frontal parallle par un bus de type srie tout la fois :  trs rapide : dot d'une frquence de 200 800 MHz voire bientt 1,4 GHz ;  trs souple : les donnes transitent simultanment dans les deux sens ;  trs modulable : d'une largeur pouvant varier entre 2 et 32 bits ;  trs polyvalent : permettant non seulement d'interconnecter un processeur sa carte mre mais aussi d'interconnecter plusieurs processeurs entre eux. AMD nomme ce bus hypertransport. 33

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

Processeur (Anne) Intel 8088 (1979) Intel 8088 (1979) Intel 8086 (1978) Intel 286 (1981) Intel 386SX (1988) Intel 386DX (1985) Intel 486 (1989) Intel Pentium (1992) AMD K5 (1996) Cyrix 6x86 (1996) Intel Pentium II (1997) AMD K6 (1997) Intel Celeron (1999) Intel Pentium III (1999) AMD Athlon (1999) AMD Duron (2000) Intel Pentium 4 (2000) AMD Athlon XP (2001) Intel Itanium (2001) AMD Athlon 64 (2003)

Largeur FSB 8 bits 8 bits 16 bits " " 32 bits " 64 bits " " " " " " " " " " " "

Frquence (MHz) 4,77 puis 8 4,77 puis 8 4,77 puis 10 6, 12 puis 20 16 33 16, 33 puis 40 16 50 5060 puis 66 5060 puis 66 40 66 puis 75 66 puis 100 6695 puis 100 66 puis 100 100 puis 133 2x100 puis 2x133 2x100 4x100-4x133 puis 4x200 2x133 puis 2x166 2x133 Hypertransport

tableau 2.1: Caractristiques FSB

2.2.3 Bus d'adresses


Dans le cas d'un change entre le processeur et la mmoire, deux cas de gure peuvent se prsenter : 1. Soit le processeur rclame une valeur en mmoire : il place alors l'adresse de l'emplacement mmoire demand sur le bus d'adresses et envoie sa requte la mmoire. Celleci y rpond en recherchant la donne l'adresse demande puis place celleci sur le bus de donnes destination de la puce 2. 2. Soit le processeur dsire sauvegarder une donne en mmoire. Il place alors la valeur sur le bus de donnes et l'adresse o il dsire l'crire en mmoire sur le bus d'adresses. La mmoire reoit la requte et copie la donne. La frquence de fonctionnement du bus d'adresse est la mme que la cadence de travail du bus de donnes, mais sa largeur, elle, dire totalement. Bien videmment, la tendance des processeurs est de toujours augmenter la taille de ce bus d'adresses ce qui donne lieu une mmoire adressable permise par les derniers modles de puces trs importante comme l'indique le tableau suivant : 34

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.2. Bus processeur

Processeur Intel 8088 Intel 8086 Intel 286 Intel 386SX Intel 386DX Intel 486 Intel Pentium AMD K5 Cyrix 6x86 AMD K6 AMD Athlon AMD Duron AMD Athlon XP Intel Pentium II Intel Celeron Intel Pentium III Intel Pentium 4 Intel Itanium AMD Athlon 64

Largeur Bus adresses Mmoire adressable 20 bits " 24 bits " 32 bits " " " " " " " " 36 bits " " " 44 bits 64 bits 1 Mo " 16 Mo " 4 Go " " " " " " " " 64 Go " " " 16 To 256 To

tableau 2.2: Caractristiques bus d'adresses

2.2.4 Bus de mmoire cache


Dans le but de limiter au maximum les requtes en mmoire du processeur, les constructeurs ont intercal entre la puce (chipset ) et la mmoire principale un dispositif intermdiaire nomm mmoire cache. Les processeurs modernes n'incluent pas un seul bloc de mmoire cache mais deux, voire mme trois. Cellesci sont appeles mmoires cache interne (niveau 1) et externe (niveaux 2 et 3), de rapidit dcroissante mais dispose en quantit croissante. Bien videmment, qui dit mmoire intermdiaire dit bus pour la relier au processeur. Celuici est tout naturellement appel bus de mmoire cache (Back Side Bus ). La frquence de fonctionnement de ce bus est extrmement variable et dpend directement de l'endroit o est implante la mmoire cache. Les premiers processeurs mmoire cache partageaient leur bus systme entre l'accs la RAM et l'accs la mmoire cache externe. Le processeur Intel Pentium II fut la premire puce grand public ddier un bus la mmoire cache externe. Ds lors, l'accs simultane aux deux types de mmoire devenait possible (gain sensible de rapidit). Ce dispositif, appel architecture DIB (Double Independant Bus ), se rvla si performant qu'il fut reconduit sur tous les processeurs ultrieurs. 35

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

2.3 Bus d'extension


Il s'agit des bus chargs de relier les priphriques internes.

2.3.1 Bus parallles : ISA-EISA, MCA-VLB, PCI, IDE-EIDE, AGP, SCSI


2.3.1.1 ISA/EISA ((Extended) Industry Standard Architecture )
Le bus ISA est tomb en dsutude (prsent jusqu'au P3). De frquence relativement basse (8,33 MHz) et de caractristiques peu puissantes (80286 : 16 bits, 16 Mo de mmoire adressable, frquence 8 MHz, taux de transfert 8 Mo/s, 15 IRQ sans partage, mono-matre, bus-mastering : DMA), il tait utilis pour connecter des cartes  lentes  (modems, carte sons). Le bus EISA date de 1988 et reprsente une amlioration du bus ISA (80486 : 32 bits, 4 Go adressable, frquence 8 MHz, taux de transfert 33Mo/s, partage des IRQ, multi-matres).

2.3.1.2 MCA, VLB


Les bus MCA et VLB tait sens pallier certains dfauts des bus ISA. Ils sont toutefois vite tombs en dsutude et remplacs par le bus PCI.

2.3.1.3 PCI (Peripheral Component Interconnect )


Il a t mis au point 1992. Il est gnralement situ entre le bus processeur (NorthBridge) et le bus d'entressorties (SouthBridge). Il possde une largeur de 32 bits (nouvelle version 64 bits) et est cadenc 33 MHz (nouvelle version 66 MHz), ce qui lui permet d'orir un dbit de 132 Mo/s (nouvelle version 264 Mo/s). C'est un bus synchrone supportant un multiplexage des signaux d'adressages et de donnes. Les connecteurs PCI sont souvent prsents sur les cartesmres au nombre de 3 ou 4 au minimum et sont en gnral reconnaissables par leur couleur blanche (normalise).

2.3.1.4 ATA ou IDE/EIDE


Le standard ATA (Advanced Technology Attachment ) est une interface standard permettant la connexion de priphriques de stockage sur les ordinateurs de type PC. Le standard ATA a t mis au point en 1994. Malgr l'appellation ocielle ATA, ce standard est plus connue sous le terme commercial IDE (Interface Drive Electronics ) ou EIDE (Enhanced IDE ). Il est originalement prvu pour connecter des disques durs, toutefois une extension nomme ATAPI (ATA Packet Interface ) a t dveloppe an de pouvoir interfacer d'autres priphriques de stockage (lecteurs de CDROM, DVDROM, etc) sur une interface ATA. La norme ATA permet de relier des priphriques de stockage directement la cartemre grce une nappe IDE (ribbon cable ) gnralement compose de 40 ls parallles et de trois connecteurs (un connecteur pour la carte mre, gnralement bleu, et les connecteurs restants pour deux priphriques de stockage, respectivement noir et gris). Sur la nappe un des priphriques doit tre dclar comme matre (master ), l'autre en esclave (slave ). Par convention le connecteur l'extrmit (noir) est rserv matre et le connecteur du milieu (gris) l'esclave. Un mode appel cable select (CS) permet de dnir automatiquement le priphrique matre et l'esclave pour peu que le BIOS de l'ordinateur supporte cette fonctionnalit. Le protocole PIO (Programmed Input/Output ) permet aux priphriques d'changer des donnes avec la mmoire vive l'aide de commandes gres directement par le processeur. Toutefois, de gros transferts de donnes peuvent rapidement imposer une grosse charge de travail au processeur et ralentir l'ensemble du systme. Il existe 5 modes PIO (Mode 0 : 3.3 Mo/s Mode 4 : 16.7 Mo/s). 36

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.3. Bus d'extension

Le matre et l'esclave peuvent aussi communiquer en mode DMA (de 2.1 Mo/s 16.7 Mo/s) ou Ultra DMA (de 16.7 Mo/s 133 Mo/s pour l'Ultra DMA 7 ou Ultra ATA-133). La norme ATA a vu plusieurs volutions :

ATA 1 aussi appele IDE : supporte les modes PIO (de 0 2)et DMA (de 0 2), assurant un dbit ATA 2 aussi appele EIDE : supporte les modes PIO (de 0 4)et DMA (de 0 2), assurant un
de 8.3 Mo/s ; dbit de 16.6 Mo/s. L'EIDE permet dsormais de supporter des bus de capacit 8.4 Go (au lieu de 528 Mo pour l'IDE) grce au LBA (Large Block Adressing ) ; ATA 3 apporte le SMART (Self Monitoring Analysis and Reporting Technology ) dont le but est de prvenir une dfaillance matrielle du disque ; ATA 4 modie le mode LBA pour une capacit des disques 137 Go ; ATA 5 depuis 1999, deux nouveaux modes de transfert (UltraDMA 3 et 4 aussi appel Ultra ATA 66) ; ATA 6 Depuis 2001, support de l'Ultra DMA 5 (Ultra ATA 100) avec un dbit de 100 Mo/s. Une nouvelle fonctionnalit, appele AAM (Automatic Acoustic Management ) permet d'ajuster automatiquement la vitesse d'accs aux disques supportant cette fonction an d'en rduire le bruit de fonctionnement ; ATA 7 Depuis 2002, support de l'Ultra DMA 6 (Ultra ATA 133) avec un dbit de 133 Mo/s.

2.3.1.5 AGP
Le bus AGP (Accelerated Graphics Port ) apparu en 1997, est directement reli au bus processeur (FSB : Front Side Bus ) et bncie de la mme frquence, donc d'une bande passante leve. Le contrleur AGP a t mis au point spciquement pour la connexion de la carte graphique en lui ouvrant un canal direct d'accs la mmoire (DMA). Le port AGP 1X est cadenc 66 MHz, ce qui lui ore une bande passante de 264 Mo/s. Maintenant la nouvelle norme est en AGP Pro 8X avec une bande passante d'environ 2Go/s (66,66 MHz x 8(coef.) x 32 bits 2,11 Go/s).

2.3.1.6 SCSI
Le standard SCSI (Small Computer System Interface ) permet la connexion de plusieurs priphriques de types dirents sur un ordinateur par l'intermdiaire d'une carte (contrleur SCSI utilisant un connecteur PCI). Le nombre de priphriques pouvant tre branchs dpend de la largeur du bus SCSI (7 priphriques avec un bus 8 bits, 15 avec un bus 16 bits). L'adressage des priphriques se fait grce des numros d'identication. Le premier numro est l'ID (numro permettant de dsigner le contrleur intgr chaque priphrique). Un priphrique SCSI peut avoir jusqu' 8 units logiques qui sont repres par un identicateur appel LUN (Logical Unit Number ). Enn, un ordinateur peut comporter plusieurs cartes SCSI, c'est pourquoi un numro de carte est assign chacune d'entreelles. De cette faon, pour communiquer avec un priphrique, l'ordinateur doit donner une adresse de la forme numro de carte ID LUN. Deux types de bus SCSI existent :  le bus asymtrique SE (Single Ended ), bas sur une architecture parallle (narrow : 8 bits ou wide : 16 bits)dans laquelle chaque canal circule sur un l (sensible aux interfrences).  le bus direntiel permet le transport des signaux sur une paire de ls (information code par dirence entre les deux ls) an de compenser les perturbations lectromagntiques (distance de cblage plus importante, 25 m). La premire norme SCSI date de 1986 (bus cadenc 4,77 MHz, largeur 8 bits donc dbits de l'ordre de 5 Mo/s). En 1994, apparition de la norme SCSI2 (Wide SCSI2 : 16 bits, dbit de 10Mo/s) puis Fast SCSI2(synchrone : 20 Mo/s), plus rcemment Fast40 (40 Mo/s). La nouvelle norme SCSI3 37

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

intgre de nouvelles commandes (largeur 16 bits, 80 MHz DDR, chanage de 32 priphriques, dbit de 320 Mo/s en mode Ultra320 ou bien 80 MHz QDR, dbit de 640 Mo/s en mode Ultra640).

2.3.2 Bus sries : XPCI, SSA-FC-IEEE1394, SATA, SPI-Microwire, I2C


2.3.2.1 XPCI
Le bus (PCI eXpress ou 3GIO (Third Generation I/O ) a t mis au point en 2002. Contrairement au bus PCI, il fonctionne en interface srie, ce qui lui permet d'obtenir une bande passante beaucoup plus leve que ce dernier. Le bus PCI Express se dcline en plusieurs versions (1X : usage d'entressorties haut dbit, 4X-8X : usage sur serveurs, 16X-32X : usage port graphique), permettant d'obtenir des dbits compris entre 250 Mo/s et 8 Go/s ! Ainsi, avec un cot de fabrication similaire celui du port AGP, le bus PCI Express est amen le remplacer progressivement. Les connecteurs PCI Express sont incompatibles avec les anciens connecteurs PCI et possdent des tailles variables et une plus faible consommation lectrique. Il possde le Hot Plug and Play. Les connecteurs sont reconnaissables grce leur petite taille et leur couleur anthracite. Le standard PCI Express a galement vocation supplanter la technologie PC Card sous la forme de connecteurs PCI Express Mini Card. De plus, contrairement au PCI usage interne, le PCI Express permet la connection des priphriques externes l'aide de cbles. Pour autant, il ne se positionne pas en concurrence des ports USB ou FireWire.

2.3.2.2 SCSI srie : SSA, FC et IEEE1394


Il existe aussi des interfaces SCSI sries SSA (Serial Storage Architecture ), FC (Fiber Channel ) et IEEE1394 qui font aussi oce de bus de priphriques externes. En eet, la transmission parallle entrane des restrictions en termes de longueur de cble. Les signaux de commandes, d'tats et de donnes sont encapsuls en paquets pour la transmission. Elles possdent plusieurs avantages (interconnexions peer-to-peer, augmentation de la abilit et rduction de la complexit du cblage, double accs, connectivit accrue et terminaisons simplies, possibilits de topologies en Bus, Anneaux et Arbres, connexions rseau et liaisons WAN). Le bus IEEE1394 (aussi Firewire et I-Link) sera tudi en dtail dans un chapitre ultrieur.

2.3.2.3 S-ATA
Le standard SATA (Serial ATA) est apparu en 2003 an de pallier les limitations de la norme ATA (ou IDE) qui utilise un mode de transmission en parallle. En eet le mode de transmission en parallle n'est pas prvu pour supporter des frquences leves en raison des problmes lis aux interfrences lectromagntiques entre les dirents ls. Le Serial ATA est bas sur une communication srie o une voie est utilise pour transmettre les donnes et une autre voie sert la transmission d'accuss de rception. Sur chacune de ces voies les donnes sont transmises en utilisant le mode de transmission LVDS (Low Voltage Dierential Signaling ) consistant transfrer un signal sur un l et son oppos sur un second l an de permettre au rcepteur de reconstituer le signal par dirence. Les donnes de contrle sont transmis sur la mme voie que les donnes en utilisant une squence de bits particulire pour les distinguer. Ainsi la communication demande deux voies de transmission, chacune eectue via deux ls, soit un total de quatre ls pour la transmission. Il permet d'obtenir des dbits de l'ordre de 187.5 Mo/s (dbit utile de 150 Mo/s cause des bits de stop et start). Le Serial ATA II avoisine les 375 Mo/s (300 Mo/s utiles), puis terme 750 Mo/s (600 Mo/s utiles). Les cbles Serial ATA peuvent mesurer jusqu' 1 mtre de long (contre 45 cm pour les nappes IDE). Contrairement l'IDE, les priphriques Serial ATA sont seuls sur chaque 38

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.4. Bus de priphriques

cble et il n'est donc plus ncessaire de dnir des matres et des esclaves. D'autre part, elle permet le Hot Plug.

2.3.2.4 SPI, I2C


Les bus sries sont plus utiliss dans les systmes industriels pour lesquels le temps de traitement n'est pas critique et pour leur protocole simpli. Le bus SPI (comme le bus microwire ) est un bus srie synchrone qui permet la connection de 8 priphriques au maximum en tolrant un dbit maximum de 2 Mbits/s. Le bus I2C est aussi un bus srie synchrone qui permet la connection de 40 priphriques (selon leur charge capacitive) avec un dbit de 400 kBits/s. Il sera dtaill dans un chapitre ultrieur.

2.4 Bus de priphriques


Les bus de priphriques (externes) conversent habituellement des vitesses plus lentes (comparativement aux autres bus), parce qu'ils doivent communiquer avec l'extrieur sur de plus grandes distances. Ils sont aussi appels ports.

2.4.1 USB
Le bus USB (Universal Serial Bus, en franais Bus srie universel) est, comme son nom l'indique, bas sur une architecture de type srie. Il s'agit toutefois d'une interface entresortie beaucoup plus rapide que les ports srie standards. L'architecture qui a t retenue pour ce type de port est en srie pour deux raisons principales :  l'architecture srie permet d'utiliser une cadence d'horloge beaucoup plus leve qu'une interface parallle, car celleci ne supporte pas des frquences trop leves (dans une architecture haut dbit, les bits circulant sur chaque l arrivent avec des dcalages, provoquant des erreurs).  les cbles srie cotent beaucoup moins cher que les cbles parallles. On peut y connecter tous les priphriques et en grand nombre (127) moyennant l'utilisation de concentrateurs (HUB), comportant une seule entre et plusieurs sorties. Certains sont actifs (fournissant de l'nergie lectrique), d'autres passifs. Le bus USB peut mme tre amen transmettre les signaux vido. Il possde un certain confort d'utilisation (branchement chaud : hot Plug & Play). La liaison repose essentiellement sur une paire direntielle mode srie (cble 4 ls). Deux vitesses permettent de concilier le nombre d'htes et la rapidit de transfert pour les seuls priphriques qui en ont besoin (dtection comme lent ou rapide). L'USB 1 est limit (1.5 Mbits/s en lent, 12 Mbit/s en rapide) tandis que l'USB 2 propose un dbit max de 480 Mbits/s. Simple mcaniquement, il ne l'est pas du point de vue lectronique et ncessite une conguration prcise. La communication entre l'hte (l'ordinateur) et les priphriques se fait selon un protocole bas sur le principe de l'anneau jeton (token ring ). Cela signie que la bande passante est partage temporellement entre tous les priphriques connects. L'hte met un signal de dbut de squence chaque milliseconde, intervalle de temps pendant lequel il va donner simultanment la parole chacun d'entre eux. Lorsque l'hte dsire communiquer avec un priphrique, il met un jeton (un paquet de donnes, contenant l'adresse du priphrique, cod sur 7 bits) dsignant un priphrique, c'est donc l'hte qui dcide du dialogue avec les priphriques. Si le priphrique reconnat son adresse dans le jeton, il envoie un paquet de donnes en rponse, sinon il fait suivre le paquet aux autres priphriques connects. Les donnes ainsi changes sont codes selon le codage NRZI. Puisque l'adresse est code sur 7 bits, 128 priphriques peuvent tre connects simultanment 39

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

un port de ce type. Il convient en ralit de ramener ce chire 127 car l'adresse 0 est une adresse rserve. A raison d'une longueur de cble maximale entre deux priphriques de 5 mtres et d'un nombre maximal de 5 hubs (aliments), il est possible de crer une chane longue de 25 mtres ! Son succs et le fait qu'il est amen remplacer le port srie (RS232) justiera une tude dtaille dans un prochain chapitre.

2.4.2 IEEE1394
Le bus IEEE 1394 (nom de la norme laquelle il fait rfrence) a t mis au point la n de l'anne 1995 an de fournir un systme d'interconnexion permettant de faire circuler des donnes haute vitesse en temps rel. Apple lui a donn le nom commercial FireWire qui est devenu le plus usit. Sony lui a galement donn le nom commercial de i.Link, tandis que Texas Instrument lui a prfr le nom de Lynx. Il s'agit ainsi d'un port permettant de connecter des priphriques (camscope numrique ou disques durs) trs haut dbit. Il existe ainsi des cartes d'extension (gnralement au format PCI) permettant de doter un ordinateur de connecteurs FireWire. Il utilise un cble de 6 ls (2 paires pour les donnes et l'horloge, et deux ls pour l'alimentation) lui permettant d'obtenir un dbit de 400 Mbit/s ou 800 Mbits/s. La nouvelle norme IEEE 1394b est galement appele FireWire 2 ou FireWire Gigabit (dbit de 3.2 Gbit/s depuis 2003). Grce ses 2 ls d'horloge, le Firewire peut fonctionner selon 2 modes :  asynchrone : ce mode est bas sur une transmission de paquets intervalles de temps variables. Cela signie que l'hte envoie un paquet de donnes et attend de recevoir un accus de rception du priphrique. Si l'hte reoit un accus de rception, il envoie le paquet de donnes suivant, sinon le paquet est nouveau rexpdi au bout d'un temps d'attente.  isochrone : ce mode permet l'envoi de paquets de donnes de taille xe intervalle de temps rgulier (cadenc grce aux deux ls d'horloge). De cette faon aucun accus de rception n'est ncessaire, on a donc un dbit xe et donc une bande passante garantie. De plus, tant donn qu'aucun accus de rception n'est ncessaire, l'adressage des priphriques est simpli et la bande passante conomise permet de gagner en vitesse de transfert. Il y a la possibilit d'utiliser des ponts (plusieurs bus entre eux, adressage par identicateur de nud cod sur 16 bits). Cet identicateur est scind en deux champs : un champ de 10 bits permettant de dsigner le pont et un champ de 6 bits spciant le nud. Il est donc possible de relier 1023 ponts sur chacun desquels il eut y avoir 63 nuds. Ceci permet de relier de nombreux priphriques (65 535 au max !). La bande passante est plus leve que pour l'USB, ce qui justie son emploi frquent pour des applications vido. De plus, sa structure et son protocole d'utilisation est trs bien adapt l'utilisation en rseau (contrairement l'USB). L'alternative ou sa complmentarit avec le bus USB justiera une tude dtaille dans un prochain chapitre

2.4.3 IEEE488 (GPIB et HPIB)


Ces bus sont aussi nomms bus d'instrumentation car ils ont t dvelopps principalement pour assurer une communication entre un instrument (de mesure) avec plusieurs procds. Ce bus permet la liaison d'quipements de mesure. Le GPIB (General Purpose Interface Bus ) ou HPIB (Hewlet Packard Interface Bus ) est form de lignes de transmission de donnes en parallle et de lignes de contrle des changes (transmissions sur des distances rduites : une pice). En utilisant le protocole de norme IEEE488, ces bus devait quiper tous les appareils connectable sur rseau d'instrumentation. Aujourd'hui, on leur prfrera une interface standard srie, voire une carte rseau. 40

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

2.5. Bus embarqus

2.5 Bus embarqus


2.5.1 PCCard (ancien PCMCIA)

Le bus PC Card a t mis au point en 1989 par le consortium PCMCIA (Personal Computer Memory Card International Association ) an d'tendre les capacits d'accueil de priphriques des ordinateurs portables. Les priphriques PCMCIA sont au format carte de crdit (54 mm 85 mm). Il existe trois types de facteur de forme correspondant trois paisseurs standards :  Les cartes de type I (paisseur 3,3 mm) sont gnralement utilises pour des cartes d'extension de mmoire.  Les cartes de type II (5 mm) servent habituellement pour des priphriques de communication (modem, carte rseau, carte rseau sans l) et de petits disques durs.  Les cartes de type III (10,5 mm) sont en gnral rserves des priphriques embarquant des lments mcaniques (disques dur de grosse capacit). Depuis 1995 la norme CardBus (parfois appele PC Card 32bit) est apparue, permettant des transferts de donnes en 32 bits, cadencs une frquence de 33 MHz avec une tension de 3V (contre 5.5V pour le PCMCIA).

2.5.2 Bus CAN

Initialement VAN (dvelopp par Renault PSA-SAGEM-Valo) et CAN (dvelopp par Bosch) ces bus tait destin l'quipement automobile. Aujourd'hui, le bus CAN (Controller Area Network ) se situe entre bus et rseau de terrain (transmission par cble, infrarouge ou bre optique) et reprsente avant tout un protocole de transmission. Du type multi-matre, orient messages courts avec correction d'erreurs CRC, le bus CAN est bien adapt la scrutation de variables mises par des stations dportes. La norme ISO 11898 spcie un dbit maximum de 1Mbit/s. La longueur maximum du bus est dtermine par la charge capacitive et le dbit (1 Mbit/s 40 m, 500 Kbit/s 100 m et 20 Kbit/s 1 km). Le protocole est bas sur le principe de diusion gnrale (le contenu de chaque message possde une identication reu de faon univoque par tous les abonns) et l'identicateur indique la priorit du message qui dtermine l'assignation du bus lorsque plusieurs stations mettrices sont en concurrences. En version de base, c'est un nombre de 11 bits (soit 2048 messages de 8 octets). L'adressage par le contenu assure une grande exibilit de conguration (possibilit d'ajouter des stations sans modier la conguration des autres stations). 41

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 2. Les Bus

2.6 Rcapitulatif des principales caractristiques des divers Bus


type Port srie RS232 Port Parallle Standard (SPP) Bus CAN I2C IEEE488 (selon distance) USB 1 Port Parallle ECP/EPP SCSI 1 IDE SCSI 2 (Wide) EIDE SCSI 2 (Fast Wide 40) IEEE-1394a USB 2 CardBus Ultra DMA 6 SATA PCI IEEE 1394b (bre optique) SATA II SCSI 3 (Ultra 640 QDR) AGP Pro 8x XPCI dbit (Mo/s) 0.015 0.115 0.125 0.425

<1
1.5 3 5 8.3 10 16.6 40 50 60 127 133 150 264 100 (400) 600 640 2110 8000

tableau 2.3: Rcapitulatif des performances des principaux Bus

42

Chapitre 3

Interruptions
Sommaire
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Systme d'interruptions hirarchises . . . . . . . . . . . . . . . . . . . . 45 Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Mcanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Gestion des Entres-Sorties par interruption . . . . . . . . . . . . . . . . 54 Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 La programmation des interruptions . . . . . . . . . . . . . . . . . . . . . 56

3.1 Notion d'interruption


Dnition 3.1 (Interruption). Une interruption est un signal dclench par un vnement interne la machine ou externe (envoy au microprocesseur par un priphrique ou un programme) pour l'avertir d'un vnement traiter. Le microprocesseur suspend alors l'xcution en cours la n de l' opration courante pour ragir cet vnement et le traiter (le plus souvent, xcution d'une routine ). Une fois la tche eectue, il reprend le cours normal de ses oprations l' endroit o il avait t interrompu. s
La plupart des fonctionnalits incluses dans un PC sont physiquement supportes par des composants autres que le microprocesseur. Par exemple, la communication srie est assure par un UART 16550 (situ dans un ASIC sur la carte mre), ou bien le clavier est control par un microcontrolleur de type 8042. Puisque chaque priphrique (ici interne) travaille individuellement, il est ncessaire de synchroniser toutes leurs oprations, notamment leurs changes avec le microprocesseur. Une solution pour ce dernier, consiste interroger relativement frquemment l'tat de chaque composant. Il s'agit de la scrutation ou polling. 43

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

gure 3.1: Scrutation Cette mthode est (videmment) coteuse en temps et possde pour inconvnient majeur de monopoliser le microprocesseur (qui n'a plus de temps consacrer ses autres activits). De plus, lorsque le ot des donnes est lev, le microprocesseur peut perdre certaines donnes.

3.1.1 Interruption matrielle et logicielle


L'attitude prfrable consiste donner la responsabilit chaque composant d'avertir (on dit notier ) le microprocesseur en attirant son attention sur la tche eectuer en priorit. Il s'agit du mcanisme (asynchrone) d'interruption. Le priphrique envoie un signal lectrique via une patte spcique du PIC (Program Interrupt Controller : 8259) qui agit ici comme un intermdiaire entre le priphrique et le microprocesseur. Dans le cas o le PIC alerte le microprocesseur, ce dernier stoppe son activit courante et saute (on dit qu'il se droute ) vers une fonction spcique executer (Interrupt Handler : traitant d'interruption) qui a t associe au pralable au priphrique (plus prcisment, associe au vecteur d'interruption du priphrique). Ce type d'interruption est appele Interruption Matrielle.

gure 3.2: Interruption Une alternative consiste utiliser des interruptions appeles logicielles. Elle possdent la particularit d'tre synchrones. En eet, elles sont gnres par le microprocesseur lorsqu'il rencontre une instruction de type INT. Ce type d'interruption est plutt utilis par le systme d'exploitation. Certaines interruptions logicielles sont appeles exceptions (fault, trap and abort). Elles sont gnres par le microprocesseur en prsence d'une erreur critique interne. En rsum, on distingue :  les interruptions (hardware) internes dites processeur : protection du systme et des processus, appeles par une instruction l'intrieur d'un programme (overow, erreur d'adressage, code opration inexistant, problme de parit . . . ) ;  les interruptions (software) dites logicielles : permet un processus utilisateur de faire un appel au systme. Elles sont produites par l'instruction INT n o "n" est le type de l'interruption.  les interruptions (hardware) externes dites matrielles dclenches par une unit lectronique (lecteur, clavier, canal, contrleur de priphrique, panne de courant, . . . ) ou par l'horloge. Elles sont produites par l'activation des lignes INTR et NMI du microprocesseur. 44

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.2. Systme d'interruptions hirarchises

3.2 Systme d'interruptions hirarchises


A chaque interruption, est associe une priorit (systme d'interruptions hirarchises) qui permet de regrouper les interruptions en classes. Chaque classe est caractrise par un degr d'urgence d'excution de son programme d'interruption. Rgle : Une interruption de priorit j est plus prioritaire qu'une interruption de niveau i si j > i. L'intrt de ce systme est la solution de problmes tels que :  arrive de plusieurs signaux d'interruption pendant l'excution d'une instruction,  arrive d'un signal d'interruption pendant l'excution du signal de traitement d'une interruption prcdente. On peut utiliser un contrleur d'interruptions pour regrouper les ls d'interruptions, grer les priorits entre les interruptions et donner les lments de calcul d'adresse au processeur. Remarque 3.1 (NMI). Certaines interruptions prsentent tellement d'importance qu'il ne doit pas tre possible d'interrompre leur traitement. On masquera alors les autres interruptions pour empcher leur prise en compte. Certaines interruptions sont nonmasquables (Non Maskable IRQ) : on les prend obligatoirement en compte. Une interruption masque n'est pas ignore : elle est prise en compte ds qu'elle est dmasque. Au contraire, une interruption peuttre dsarme : elle sera ignore. Par dfaut, les interruptions sont videmment armes. s c'est dans les applications temps rel (conduite de processus industriels ou d'acquisition de donnes) que l'on trouve les systmes d'interruptions les plus labors. Dans certains cas chaque niveau est dcoup en sous-niveaux de priorits direntes. Un bon systme doit permettre au programmeur de pouvoir :  activer/invalider le systme d'interruption dans son ensemble ;  armer/dsarmer chacune des interruptions individuellement : une interruption dsarme est ignore ;  masquer/dmasquer individuellement chaque interruption : une interruption masque n'est pas ignore, elle est mmorise, mais elle n'est prise en compte que lorsqu'elle est dmasque ;  tablir une hirarchie entre les sources d'interruption avec plusieurs niveaux de priorit, si possible de faon dynamique ;  associer un programme spcique chaque interruption.

Exemple : Priorits et NMI


Imaginons que vous soyez en train d'tudier votre cours. Un camarade arrive pour vous demander un renseignement. Vous terminez la lecture de la phrase en cours, vous mmorisez mentalement o reprendre votre lecture, puis vous vous interrompez pour lui rpondre. Vous auriez pu continuer en faisant semblant de n'avoir rien entendu : vous auriez masqu l'interruption. Pendant votre discussion avec votre camarade, un troisime personnage vient vous poser une autre question. S'il s'agit d'un autre camarade vous le laisserez patienter quelques minutes le temps de terminer avec la premire demande de renseignement. S'il s'agit de votre professeur vous allez vous interrompre immdiatement pour pouvoir lui rpondre. La demande d'interruption du professeur a un niveau de priorit suprieur, elle peut interrompre l'interruption prcdente.

3.3 Causes d'interruption


Il y a deux grandes catgories d'interruptions : les interruptions externes et les interruptions internes. 45

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

Les interruptions externes matrielles sont dues aux priphriques (imprimante, terminal, horloge externe, etc.) ou des dispositifs extrieurs au systme informatique (capteurs, systme d'alarme, etc.). Par exemple un priphrique va gnrer une interruption pour signaler au systme qu'il a termin de traiter la requte prcdente et qu'il est prt pour recevoir une nouvelle commande. Dans le contexte de contrle de processus, des phnomnes physiques doivent tre signals au systme, par exemple le passage d'un objet devant un dtecteur. Dans ce cas c'est le dispositif externe au systme qui met un signal qui est reu par le systme comme une interruption. Le programme courant lui-mme peut dclencher une interruption l'aide d'une instruction spciale. Cela permet, par exemple, d'activer certains services du systme qui ncessitent de bncier de privilges rservs au systme. C'est une interruption externe et logicielle. Les interruptions internes produites par le processeur, sur des erreurs par exemple (division par zro, dpassement de capacit, erreur d'adressage, accs une zone de mmoire protge, etc.). Ces interruptions sont gnralement appeles exceptions. Les interruptions induites par l'horloge permettent la gestion du temps par le systme d'exploitation. Par exemple, le systme peut programmer l'horloge pour que celle-ci gnre une interruption toutes les 10 ms. A chacune de ces interruptions le systme peut reprendre la main et excuter un algorithme de choix de tches (ordonnanceur) de manire 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 Mcanisme d'interruption


3.4.1 Identication de la source
L'unit centrale dispose d'une entre spciale, gnralement appele IRQ (Interrupt ReQuest), associe un bit dit bit d'interruption. Avant de passer l'instruction suivante, le CPU teste l'tat de ce bit. S'il est 1 le CPU est inform d'une demande d'interruption. Pour pouvoir la traiter il doit en dterminer l'origine. Il existe deux mthodes principales pour identier la source d'une interruption : la scrutation (polling) et l'identication directe. Le choix entre ces deux mthodes est gnralement le rsultat d'un compromis cot/performance selon en particulier le nombre potentiel de priphriques qui peuvent tre connects. Etudions quelques mcanismes d'identication de la source d'une interruption. De trs nombreuses architectures sont possibles :  Un exemple, bas sur le principe de la scrutation, montre que toutes les lignes d'interruption sont runies par une porte OU et chacune des lignes correspond un priphrique. Lorsque le bit d'interruption est trouv 1 par le CPU, une routine de service est active. Celle-ci va tester l'tat de la ligne de chacun des priphriques pour identier le demandeur, puis excuter la tche correspondante. A la rception d'un signal sur l'entre IRQ le processeur met un signal d'acquittement IACK qui charge l'tat des lignes de demande dans un registre. Le processeur lit ensuite ce registre pour identier l'origine de la demande.  Il peut aussi n'exister qu'une seule ligne d'interruption que chaque priphrique demandeur maintient dans un tat haut. L'unit centrale (le microprocesseur) est alors oblige d'interroger chacun des priphriques prsents sur le bus pour lui demander s'il requiert un service. La priorit est ici dnie par l'ordre dans lequel les lignes sont testes. En gnral dans ce mode de fonctionnement une interruption n'est elle-mme pas interruptible car le mcanisme de scrutation est assez long.  Une autre mthode (IRQ : Interrupt ReQuest) consiste en un code envoy par le priphrique. Ce code est utilis pour excuter une routine de service spcique au priphrique. Ce code 46

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.4. Mcanisme d'interruption

peut tre par exemple un pointeur dans une table contenant le vecteur d'interruption de chaque routine de service. Un vecteur d'interruption contient l'adresse de dbut de la procdure de traitement de l'interruption et le registre d'tat du processeur ncessaire au dbut du traitement. Celui-ci, qui peut contenir certains niveaux de privilges ncessaires au traitement de la requte, remplace le registre d'tat courant, aprs que ce dernier ait t sauvegard dans la pile avec le reste du contexte du programme interrompu. Le traitement de l'interruption, qui dbute la premire instruction spcique l'interruption, est donc plus rapide. Dans ce schma une routine de service peut elle-mme tre interrompue. La technique prcdente ncessite un mcanisme pour empcher deux priphriques d'crire leur code simultanment sur le bus. Il est galement possible de chaner les priphriques. La priorit est alors dnie par la position du priphrique sur la ligne d'interruption : cblage en daisy-chain.

3.4.2 Vecteur d'interruption


Lorsqu'une interruption survient,le microprocesseur a besoin de connatre l'adresse du sousprogramme de service de cette interruption. Pour cela, la source d'interruption place sur le bus de donnes un code numrique indiquant la nature de l'interruption. Le microprocesseur utilise ce code pour rechercher dans une table en mmoire centrale l'adresse du sous-programme d'interruption excuter. Chaque lment de cette table s'appelle un vecteur d'interruption. Lorsque les adresses des sous-programmes d'interruptions sont grs de cette manire, on dit que les interruptions sont vectorises. Avantage de la vectorisation des interruptions : l'emplacement d'une routine (ISR) peut tre n'importe o dans la mmoire, il sut de spcier le vecteur d'interruption correspondant. Les interruptions de la famille X86 sont vectorises. La table des vecteurs d'interruptions (IVT : Interrupt Vector Table) doit obligatoirement commencer l'adresse physique 0x00000 dans la mmoire centrale. Chaque vecteur d'interruption est constitu de 4 octets reprsentant une adresse logique du type CS : IP :

gure 3.3: Table des vecteurs d'interruptions 47

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

Lors d'une interruption, le processeur se sert de la table des vecteurs (IVT) dcrites la gure 3.3. Cette table dmarre l'adresse 0 de la mmoire. Elle contient les adresses des routines d'interruptions (ISR) sur 4 octets (16 bits pour le segment,16 bits pour le dplacement) et les valeurs de ces quatres octets sont chargs dans les registres CS :IP. Chaque lment contient l'adresse de dbut d'un programme d'interruption sur 4 octets (oset 2 octets, segment 2 octets). La taille de la table est donc de 4 x 256 = 1 Ko. Elle occupe les adresses 0h 3FFh en mmoire centrale. Le tableau 3.1 donne le dtails des interruptions.
INT (numro) 00 - 01 02 03 - 07 08 09 0A 0B 0C 0D 0E 0F 10 - 6F 70 71 72 73 74 75 76 77 78 - FF Nature de l'IT Exception NMI Exception IRQ 0 IRQ 1 IRQ 2 IRQ 3 IRQ 4 IRQ 5 IRQ 6 IRQ 7 IT Logicielles IRQ 8 IRQ 9 IRQ 10 IRQ 11 IRQ 12 IRQ 13 IRQ 14 IRQ 15 IT Logicielles Utilisation usuelle Erreur de parit en mmoire Horloge interne (System Timer) Gestion Clavier Redirection PIC 2 Port srie COM2 / COM4 Port srie COM1 / COM3 Carte Son Lecteur Disquettes Port Parallle Horloge Temps Rel (CMOS) Redirection IRQ2 Disponible Disponible Souris PS/2 Co-processeur Arithmtique IDE 1 IDE 2

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

3.4.3 Actions entreprendre


Lorsqu'une interruption est dtecte il faut que le systme ragisse le plus rapidement possible. Pour cela le matriel dclenche un branchement automatique vers une routine systme prpare l'avance (Interrupt Service Routine). Cette routine se trouve une adresse xe qui peut tre cble. L'tat de la machine doit tre sauvegard. Le contexte (en particulier, la table des pages, horloge, etc.) du programme interrompu est sauv, en gnral dans une pile. Cette sauvegarde du contexte peut tre ralise par la routine de service elle-mme ou prise en charge automatiquement par l'unit centrale de traitement. En fonction du code identiant le priphrique responsable de l'interruption, l'adresse de la routine de service associe est charge dans le compteur ordinal, ce qui provoque un branchement automatique. Le registre d'tat peut galement tre modi pour ventuellement bncier de certains privilges particuliers. Les interruptions de niveau infrieur ou gal doivent tre masques. Ce mcanisme est rapide car c'est le matriel (hardware) qui se charge du branchement vers la routine d'interruption, de la sauvegarde du contexte et la modication du compteur ordinal. Il ore une grande souplesse car il est possible d'crire une grande varit de routines de service. Il peut cependant tre pnalisant pour un processeur avec pipe-line et un grand 48

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.5. Le PIC 8259

nombre de registres. Dans certaines architectures, en particulier celles orientes vers les applications temps rel, un processeur supplmentaire peut tre associ au processeur principal avec pour tche de grer les oprations d'entres/sorties et de ltrer les interruptions.

3.4.4 Reprise du programme interrompu


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

3.4.5 Le partage des interruptions


Comme le montre l'IVT, les IRQ sont en nombre limites. Ceci a longtemps t la cause de conits matriels. Ce problme est dsormais rsolu par le partage des interruptions. Tout composant dit  legacy  ne peut en aucun cas accepter le partage des interruptions. La raison est trs simple. Ces composants sont physiquement connects aux entres du contrleur, alors que pour pouvoir partager une interruption, il faut bien sr pouvoir grer une connexion de plusieurs lignes d'interruption intermdiaires avant d'en brancher physiquement une sur le contrleur. Avec l'avnement du bus PCI, il est possible pour deux cartes d'extension PCI d'utiliser la mme interruption si elles acceptent le partage d'IRQ. Seule la exibilit qu'ore le bus PCI le permet. De fait, dans le tableau des IRQ, seules les IRQ 9, 10 et 11 peuvent encore tre considres comme partageables. En eet, toutes les autres IRQ sont utilises par des composants legacy, et ce en considrant que le PC est quip d'une carte son connecte sur le bus ISA du PC. Les BIOS des PCs modernes autorisent maintenant aussi le partage d'interruption sur les IRQs de 3 7, partir du moment o aucun composant legacy n'est connect dessus. Par exemple, si vous n'utilisez aucun de vos ports srie, vous pouvez alors, depuis le SETUP de certains BIOS, les dclarer comme inactifs. Ceci correspondra une relle dconnexion physique des ports qui seront alors rendus invisibles et le bnce direct sera la libration des IRQ 3 et 4 dans cet exemple prcis. Les priphriques PCI peuvent partager les mmes IRQ parce qu'au dmarrage du PC, le BIOS construit une table appele PCI IRQ routing table. Cette table contient les entres de chaque priphrique PCI qui se verra attribuer un numro d'IRQ ISA (les numros de 0 15). Ces assignations d'IRQ ISA sont aussi lies, par construction matrielle cette fois, aux lignes physiques d'interruptions PCI associes aux dirents connecteurs PCI d'un PC donn. L'ensemble des 2 se combine en ce qui s'appelle un Link Value. Ce dernier est utilis chaque fois qu'une communication s'tablit avec un priphrique, et bien que des priphriques puissent partager une mme IRQ, ils auront tous un unique Link Value : il n'y a donc pas d'erreur possible !

3.5 Le PIC 8259


Le circuit 8259 est un circuit programmable. Il dispose de plusieurs registres d'E/S. Ce composant intercepte toutes les demandes d'interruption des priphriques et les communique au microprocesseur selon leurs priorits. 49

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

gure 3.4: Exemple de partage d'IRQ

3.5.1 Architecture du PIC 8259

gure 3.5: Architecture d'un PIC A partir de PC avec un 80286, la machine dispose de deux 8259 mis en cascade : 50

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.5. Le PIC 8259

gure 3.6: Liaison entre les 2 PIC et le microprocesseur Le premier est implant aux adresses d'E/S 0x20 0x2F tandis que le second est implant aux adresses d'E/S OxA0 0xAF. Chaque circuit permet la gestion de 8 interruptions et gre :  la vectorisation avec les processeurs 80x86 ;  le dclenchement d'IT sur niveaux ou fronts ;  les priorits des interruptions ;  les masques d'interruptions. Le microprocesseur (8086) dispose de trois lignes d'interruptions (matrielles) :  L'interruption NON MASQUABLE (NMI) : cette interruption ne peut pas tre masque, 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 invalides par le bit "I" du registre de Flags. On trouve aussi INTA (INTerrupt Acknowledgement) qui signie que le microprocesseur a bien reu par le bus de donnes le numro d'IT envoy par le contrleur ;  La broche RESET, provoque une rinitialisation du processeur (un reboot de la machine).

gure 3.7: Liaisons matrielles d'un PIC Lors d'une interruption :  S'il s'agit d'une interruption matrielle, le processeur nit le traitement de l'instruction en 51

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

cours et passe en mode non interruptible (Flag I) ;  Le processeur empile le contenu des registres CS et IP (adresse de la prochaine instruction a excuter) ;  Le processeur lit le numro d'interruption sur le bus de donnes envoye par le 8259 si l'interruption est matrielle ;  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 excute la routine d'interruption jusqu' l'instruction IRET ;  Il dpile alors CS et IP ;  Il reprend le programme en cours d'excution. Donc, la routine d'interruption doit acquitter l'interruption pour le 8259 et r-autoriser le cas chant les interruptions (Flag I). Pour programmer un traitement d'interruption matriel, il faut :  Autoriser l'interruption par son dmasquage (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 lments suivants :  Lecture des E/S lis au priphrique ayant gnr l'interruption ;  Traitement a eectuer ;  Acquitter l'interruption pour le 8259 (outp 0x20, 0x20) ; Pour l'installation du traitement d'interruption, il faut masquer toutes les interruptions au niveau du processeur.

3.5.2 Programmer le PIC 8259


Chaque circuit 8259 dispose :  d'1 registre de masquage des IT (IMR : Interrupt Mask Register)  d'1 registre de signalisation des IT (IRR : Interrupt Request Register)  d'1 registre de traitement des IT (ISR : In Service Register)  de 4 registres d'initialisation (ICW : Initialization Control Word). Ces registres sont initialiss au dmarrage par le BIOS.  de 3 registres de contrle (OCW : Operation Command Word) utiliss pour activer, acquitter les IT :  OCW1 permet de positionner les bits dans IMR. Si bit = 1 interruption masque, si bit = 0 interruption autorise ;  OCW2 permet d'acquitter les interruptions suivant 3 modes : 1. Non spcique : annule le bit de l'ISR de plus forte priorit, 2. Spcique : annule un bit de l'ISR, ce bit devra tre spcique, 3. Automatique : annule le bit de l'ISR aprs que le microprocesseur ait accus rception de l'interruption. La premire chose a faire est de programmer le registre OCW1 de chaque PIC (PIC1 : adresse 0x21 et PIC2 : adresse 0xA1) pour signier quelles vont tre les IRQ masquables ou non en utilisant les tableaux ?? et ??. 52

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.5. Le PIC 8259

Bit 0 1 2 3 4 5 6 7

Disable IRQ IRQ 0 IRQ 1 IRQ 2 IRQ 3 IRQ 4 IRQ 5 IRQ 6 IRQ 7

Fonction Horloge interne Gestion Clavier PIC 2 Port srie COM2 Port srie COM1 Carte Son Lecteur Disquettes Port Parallle

Bit 0 1 2 3 4 5 6 7

Disable IRQ IRQ 8 IRQ 9 IRQ 10 IRQ 11 IRQ 12 IRQ 13 IRQ 14 IRQ 15

Fonction Horloge Temps Rel (CMOS) Redirection IRQ2 Disponible disponible Souris PS/2 Co-processeur Arithmtique IDE 1 IDE 2

tableau 3.2: Registre OCW1 du PIC 1 (0x21) et du PIC 2 (0xA1) Remarque 3.2. Si on masque l'IRQ2 du PIC 1, on masque automatiquement les IRQ 8 15 du
PIC 2 (du fait de la redirection). s Pour masquer une IRQ, il faut la mettre la valeur 1. Exemple : crire 0xF7 dans OCW1 autorise l'IRQ 3 et masque toutes les autres. En pratique, il faut pralablement lire le contenu du registre de masquage, puis forcer le bit associ au priphrique contrler sans modier les autres bits. Ceci est ralis par la fonction outp(0x21,(inp(0x21) & 0xF7) ; . Une fois la routine termine il faut rtablir l'tat pralable des IRQ. Ceci est assur par la fonction outp(0x21,(inp(0x21) | 0x08) ; . A la n de la routine (ISR), il ne faut pas oublier l'instruction EOI (End Of Interrupt) par le biais de la fonction outp(0x20,0x20) ; pour le PIC 1 ou outp(0xA0,0x20) ; pour le PIC 2. Pour initialiser compltement les PIC, on pourra s'inspirer du code suivant : void initPIC (void) { /* MASTER PIC */ outp(0x20,0x11) ; outp(0x21,0x20) ; outp(0x21,0x04) ; outp(0x21,0x01) ; outp(0x20,0xFF) ; /* SLAVE PIC */ outp(0xA0,0x11) ; outp(0xA1,0x70) ; outp(0xA1,0x02) ; outp(0xA1,0x01) ; outp(0xA1,0xFF) ; /* Dmasquage des IRQ */ outp(0x21,0x0) ; outp(0xA1,0x0) ; }

/* /* /* /* /* /* /* /* /* /*

Init ICW1 */ Init ICW2 */ Init ICW3 */ Init ICW4 */ Masquage des IT */ Init ICW1 */ Init ICW2 */ Init ICW3 */ Init ICW4 */ Masquage des IT */

53

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

3.6 Gestion des Entres-Sorties par interruption


Chaque dispositif d'entre sortie comprend en gnral deux parties : un appareil et un contrleur de priphrique. Ce dernier sert d'interface entre l'appareil et le microprocesseur. Il reoit les requtes du microprocesseur et les transforme en commandes spciques au priphrique, et rciproquement. Ce mcanisme permet une grande souplesse et ne ncessite pas d'instructions spcialises chaque type possible de priphrique. L'unit centrale de traitement communique avec un priphrique uniquement en mode lecture ou criture comme pour la mmoire. Les donnes proprement dites sont accompagnes de commandes (actions raliser) et d'informations (tat du priphrique). Le contrleur de priphrique est charg d'interprter les requtes ainsi transmises par le processeur et il met galement en forme les informations renvoyer au processeur. Un contrleur peut tre quip d'un processeur, de registres et d'une mmoire tampon. C'est lui qui dclenche l'envoi d'un signal d'interruption. Par rapport au dialogue on classe souvent les priphriques en deux catgories (par caractres : communication par l'intermdiaire de registres et par blocs : information accessible par blocs disposant chacun d'une adresse). Selon les architectures les adresses des registres ou des blocs peuvent faire partie de la mmoire principale ou correspondre des zones distinctes cette mmoire centrale. Ces adresses peuvent tre attribues lors de la mise en place du matriel ou congures dynamiquement. Lorsque les quantits de donnes changer sont importantes, il est pnalisant de charger le processeur de grer ces changes. Il est alors prfrable de permettre une communication directe entre le priphrique et la mmoire, ou mme entre deux priphriques (DMA). La gestion des changes sur le bus de donnes est alors dlgue un contrleur DMA. Sur le plan logiciel on trouve une couche supplmentaire sous le systme d'exploitation pour lequel, nous avons dit, le contrle-commande d'un priphrique peut se limiter des accs mmoire. Cette couche, appele pilote ou driver, traduit les commandes gnrales d'changes par caractres ou par blocs en commandes spciques au priphrique, avec par exemple la gestion des signaux de contrle de la liaison, des contraintes de temps respecter, etc. Ces pilotes sont fournis avec le matriel.

3.7 Interruptions Logicielles


3.7.1 Interruptions BIOS
Citons les principales interruptions du ROM BIOS :  IT 0x08 : tic horloge (timer) appel toutes les 55 ms ( 8,2 fois/s). Elle sert par exemple arrter le moteur de l'unit de disquette lorsque aucun accs la disquette n'est excut. Cette interruption (aprs avoir lanc le programme correspondant), appele l'interruption 0x1C. Cette dernire ne contient qu'un retour IRET an de permettre aux programmeurs d'implanter leurs propres programmes d'interruption (objectifs : programmation concurrente, multitche, . . . )  IT 0x10 0x12 : variable selon le matriel connect. Souvent, IT 10 dsigne l'IT vido, IT 11 fournit la liste du matriel disponible et IT 12 le calcul de l'espace mmoire disponible  IT 0x13 : gestion des disques durs  IT 0x14 : gestion du port srie  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 systme 54

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.7. Interruptions Logicielles

 IT 0x1A : gestion de la date et de l'heure Les IT de 0 7 sont appeles directement par l'U.C. du microprocesseur. Il s'agit de :  IT 0x0 : division par 0  IT 0x1 : pas pas  IT 0x2 : circuit RAM dfectueux  IT 0x3 : point d'arrt  IT 0x4 : dbordement  IT 0x5 : copie d'cran  IT 0x6 et 0x7 : inutilises L'appel d'une interruption logicielle au niveau BIOS se fait par l'intermdiaire de la fonction int86 et en indiquant le numro de l'interruption concerne. Par exemple, la gestion des ports srie COM1 et COM2 du PC peut s'eectuer en appelant l'interruption numro 0x14. On peut ainsi utiliser les fonctions de base rsidentes correspondantes du BIOS. On utilise alors la fonction int int86 (int nb, union REGS *inregs, union REGS *outregs) ; o int86 excute l'interruption 80x86 logicielle dont le numro est spci par "nb". Au retour de l'interruption, cette fonction recopie les valeurs courantes des registres du 80x86 dans outregs. inregs peut pointer sur la mme structure que outregs. Cette fonction fait appel des types particuliers de variables (relatifs au fonctionnement propre du microprocesseur). On utilise union REGS qui est dclare de la manire suivante : union REGS { struct WORDREGS x ; struct BYTEREGS h ; }; La structure union REGS, dnie dans dos.h sert changer des informations avec la fonction int86 en utilisant 2 structures dnies ainsi : struct BYTEREGS { unsigned char al, ah, bl, bh ; unsigned char cl, ch, dl, dh ; }; struct WORDREGS { unsigned int ax, bx, cx, dx ; unsigned int si, di, cag, ags ; };

3.7.2 Interruptions DOS


Les routines associes au DOS travaillent un niveau suprieur. Elles peuvent parfois faire appel des routines du ROM BIOS. Les principales interruptions associes au DOS sont :  IT 0x20 : n normale d'un programme ;  IT 0x21 : appel de sous-routines systme ;  IT 0x22 : gestion de l'adresse de saut aprs l'excution d'un programme. Elle ne peut tre active directement. Elle prcise la routine qui reprend le contrle aprs la n du programme ;  IT 0x23 : gestion de l'adresse de saut aprs un control-break. Idem ci-dessus ;  IT 0x24 : gestion de l'adresse de saut en cas d'erreur ; 55

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

 IT 0x25 : lecture directe sur disque ;  IT 0x26 : criture directe sur disque ;  IT 0x27 : programme rsident (terminer un programme en le laissant rsident).

Un programme est dit rsident si, une fois son excution termine, il rend le contrle l'environnement appelant mais reste charg en mmoire. Il pourra alors tre ractiv tout moment, notamment l'aide d'une interruption. Lorsqu'il se termine, l'espace mmoire qu'il occupait n'est pas libr par le systme d'exploitation. Un programme rsidant s'crit comme un autre programme, il sut que la dernire instruction excute 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 conu pour excuter plusieurs choses la fois et en particulier

plusieurs appels au systme (il n'est pas multi-tches). Donc, si le programme qui s'excute en avantplan utilise un service de MS-DOS, il ne faut pas que le programme de traitement de l'IT appelle le mme service, sinon c'est gnralement le plantage. s

3.8 La programmation des interruptions

Rappelons brivement le mcanisme d'interruptions :  Au moment de l'interruption, le processeur reoit sur une patte un signal lectrique, il passe automatiquement en mode non interruptible.  A la rception de ce signal, il termine l'instruction en cours d'excution puis il sauvegarde les informations ncessaires la reprise du programme en cours d'excution.  Il lit ensuite l'identit de l'interruption par un dialogue sommaire avec le composant contrlant le mcanisme 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 appele routine d'interruption (ISR).  Il eectue un saut cette adresse pour excuter cette routine, souvent la premire instruction de cette routine est de rautoriser les interruptions.  Il excute ce code jusqu' la n de la routine o il trouve une instruction spciale de n d'interruption.  Il restaure l'tat prcdent l'interruption.  Il reprend le cours du programme qui tait en cours d'excution. Ceci est encore illustr par la gure 3.8 : 56

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

3.8. La programmation des interruptions

gure 3.8: Sous programme d'interruption Pour faciliter la programmation, on peut utiliser un certain nombre de fonction du langage C qui sont particulirement destin cet usage.

3.8.1 Fonctions lies aux interruptions


La fonction void keep (int retour, in taille) , prototype dans dos.h, suspend le programme en cours d'excution, le rend rsident. taille dsigne sa taille et code dsigne le code retourn l'environnement par ce programme. La fonction geninterrupt(int num) : dclenche l'IT num sans eectuer de copie de registres, mais en initialisant les registres l'aide de pseudo-variables dnies dans dos.h : ah,al,ch,etc . . . La fonction intdos(union REGS * rin, union REGS * rout) et la fonction intdosx(union REGS * rin, union REGS * rout, union REGS rseg) permettent d'appeler directement une routine de traitement de l'IT 0x21. La fonction biosequip dtermine la liste des quipements disponibles (IT 0x11). La fonction biosmemory calcule l'espace mmoire disponible (IT 0x12). La fonction biosdisk(int cmd, int face, int piste, int secteur, int nsecteur, void * buer) appele la fonction cmd de l'IT 0x13. La fonction bioscom(int cmd, char octet, int port) appele la routine cmd de l'IT 0x14. octet reprsente l'octet crire si cmd = 1, port dsigne le numro 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 reprsente l'octet crire si cmd = 0, port donne le numro du port parallle. 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 dclare de ce type, C va gnrer du code pour sauver les registres en dbut d'excution et pour terminer la routine avec l'instruction 57

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 3. Interruptions

IRET signalant le retour d'une interruption. La routine de service doit viter un appel aux routines systme car le DOS n'est pas rentrant. Pour raliser un traitant d'interruption (handler), on dispose de 2 fonctions utiles comme setvect( ) qui modie le contenu d'un vecteur et getvect( ) qui lit la valeur d'un vecteur. On dispose aussi de 2 macros disable( ) qui met en attente de traitement tous les signaux d'interruption et enable( ) qui autorise nouveau le traitement des interruptions. La fonction setvect(int num, void interrupt (*f) ( )) insre la fonction f en tant que routine de service de l'IT num. Pour viter cette opration, il faut viter d'tre interrompu. Il faut donc faire prcder l'appel setvect d'un appel disable( ) qui masquera toutes les IT. Ensuite, un appel enable( ) rendra nouveau possible l'interruption du programme.

58

Chapitre 4

Port Parallle
Sommaire
4.1 4.2 4.3 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.1 Introduction
Un port parallle comprend 8 canaux permettant d'envoyer simultanment les huit bits qui constituent un octet par l'intermdiaire des 8 ls. C'est une interface relativement rapide (par rapport au port srie) qui est traditionnellement utilise pour les imprimantes. Le seul problme pos par le port parallle est qu'il ne peut gure tre utilis avec des cbles longs sans amplier le signal, au risque de provoquer des erreurs de donnes. En eet, la longueur ocielle est limite trois mtres sans perte de donnes. En fait, il est possible de dpasser cette longueur en veillant certains points (le cble doit possder un bon blindage, la prsence de transformateur ou autre source lectromagntique proximit du cble peuvent gnrer toutes sortes de dysfonctionnements). Le Port parallle a subi plusieurs volutions :

Port parallle standard (SPP) : les premiers PC n'taient pas quips de dirents types de

ports parallles. Le seul port parallle disponible tait celui qui servait envoyer des informations de l'ordinateur un priphrique tel qu'une imprimante. Le caractre unidirectionnel du port parallle du PC original tait justi par son rle premier, qui tait d'envoyer des informations l'imprimante. Il travaillait en mode nibble (envoi de 4 bits la fois). Par un procd astucieux, ce port tait cependant capable d'eectuer des connexions de sortie de 8 bits et des connexions d'entre de 4 bits. Les ports parallles standard sont capables d'eectuer des connexions un taux de transfert eectif d'environ 150 Ko/s en sortie et 50 Ko/s en entre. Port parallle bidirectionnel (BPP) : en 1987, IBM lana le port parallle compltement 8 bits (en sortie comme en entre) donc un taux de transfert d'environ 150 Ko/s en entre et en sortie. Port parallle amlior (EPP) : le port EPP (Enhanced Parallel Port) correspond une nouvelle spcication et est parfois appel port parallle mode rapide. Paru en 1991, ce type de port fonctionne quasiment la vitesse d'un bus ISA. Ce port permet d'atteindre un dbit de 2Mo/s. 59

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 4. Port Parallle

Port parallle capacit amliores (ECP) : le port ECP (Enhanced Capabilities Port) a

t sorti en 1992. Tout comme le port EPP, ce port constitue une version amliore du port parallle standard et requiert un circuit logique spcial. Le port ECP trs performant requiert cependant un canal DMA ce qui peut provoquer des conits avec d'autres priphriques qui utiliserait un canal DMA. Les nouveaux ordinateurs sont gnralement fournis avec des ports ECP permettant d'eectuer des communications haut dbit. La plupart du temps, les ports ECP peuvent tre convertis en port EPP ou en port parallle standards par l'intermdiaire du BIOS (au setup). Il est seulement prfrable de placer ce port en mode EPP pour bncier d'un dbit maximal.

4.1.1 Principales Caractristiques


En rsum SPP unidirectionnel simplex No control trs lent pas de protocole EPP bidirectionnel half-duplex Software control lent protocole (hanshake) simple ECP bidirectionnel half-duplex Hardware control rapide protocole (handshake) compliqu

tableau 4.1: Direntes caractristiques des ports parallles


La dirence principale entre EPP et ECP se situe dans le fait que EPP gnre et contrle tous les transferts vers et depuis le priphrique tandis que ECP ncessite que le priphrique ngocie le mode reverse et contrle le protocole (utilisation d'un controlleur ddi l'utilisation du port ECP).

4.1.2 Norme IEEE 1284


Le standard IEEE de signaux d'interface bidirectionnelle de priphriques de port parallle pour PC, adopt dans sa version nale en mars 1994, dnit les caractristiques physiques du port parallle, ses modes de transfert de donnes et ses caractristiques physiques et lectriques. Ainsi dnit-il le comportement des signaux lectriques externes au PC applicable un port parallle multi-mode fonctionnant en mode 4 bits, 8 bits, EPP et ECP. Tous les types de modes ne sont pas requis dans le cadre du standard 1284, qui prvoit la possibilit d'en ajouter d'autres. Le standard IEEE 1284 vise dnir le comportement des signaux entre un PC et un priphrique connect, et plus particulirement une imprimante, mais il intresse galement particulirement les fabricants de priphriques utilisant le port parallle (disques durs, adaptateurs de rseaux locaux, etc.). C'est un standard de niveau matriel exclusivement et il ne prcise donc pas comment le logiciel doit communiquer avec le port, mais il a donn lieu un standard supplmentaire destin dnir une interface de niveau logiciel. Ainsi la commission IEEE 1284.3 a-t-elle t forme pour laborer un standard d'interface de niveau logiciel utiliser avec le matriel conforme au standard IEEE 1284. Ce standard, qui vise liminer les disparits existant entre les puces de port parallle des dirents fabricants, comporte une spcication destine faire contrler le fonctionnement du mode EPP par le BIOS du PC. 60

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

4.1. Introduction

4.1.3 Signaux

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

tableau 4.2: Signaux des ports parallles SPP, EPP et ECP


 STROBE : cette ligne active l'tat bas indique l'imprimante que des donnes sont prsentes sur les lignes D0 D7 et qu'il faut les prendre en compte.  ACK : l'imprimante met 0 cette ligne pour indiquer l'ordinateur qu'elle a bien reu le caractre transmis et que ce dernier peut continuer la transmission.  BUSY : cette ligne est mise 0 par l'imprimante lorsque son buer de rception est plein. L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de donnes. Il doit attendre que cette ligne revienne 1 pour recommencer mettre.  PAPER OUT : l'imprimante indique par cette ligne l'ordinateur que l'alimentation en papier a t interrompue.  SELECT : cette ligne indique l'ordinateur si l'imprimante est on line ou o line.  AUTOLINEFEED : lorsque ce signal est 1, l'imprimante doit eectuer un saut de ligne chaque caractre return reu. En eet, certaines imprimantes se contentent d'eectuer un simple retour du chariot en prsence de ce caractre.  ERROR : indique l'ordinateur que l'imprimante a dtect une erreur. INIT-RESET : l'ordinateur peut eectuer une initialisation de l'imprimante par l'intermdiaire de cette ligne.  SELECT IN : l'ordinateur peut mettre l'imprimante hors ligne par l'intermdiaire de ce signal.  GND : c'est la masse du PC. 61

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 4. Port Parallle

4.1.4 Protocole
Voici un exemple de dialogue entre un PC et une imprimante :

gure 4.2: Dialogue avec une imprimante

gure 4.3: Handshake : timing

4.2 Modes de fonctionnement


4.2.1 Mode standard SPP
Initialement, le port parallle standard (SPP) se dcompose en 3 registres :  registre de donnes : le port conserve l'octet crire sur les sorties de donnes (D0 D7). Dans les ports bidirectionnels, lorsque le port est congur comme entre, le registre de donnes conserve l'octet lire sur les contacts de donnes du connecteur.  registre d'tat : il maintient les tats logiques de cinq entres (S3 S 7). Il fonctionne en lecture seule, sauf pour le signal S0 qui est un repre de n de squence ( timeout ag) pour les ports acceptant des transferts en mode EPP et qui peut tre annul par logiciel. 62

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

4.2. Modes de fonctionnement

 registre de commande : il garde l'tat de quatre bits (C0 C3) qui sont habituellement utiliss comme sorties. L'adresse de base pour le port LPT1 est habituellement 0x378 (0x278 pour LPT2)
Oset Reg. R/W bit fonc. Base+0 Donnes W 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 Oset Reg. R/W bit fonc. Base+1 Etat R 7 busy 6 ack 5 paper out 4 select in 3 error 2 IRQ 1 reserv 0 reserv Oset Reg. R/W bit Base+2 Commande R/W 7 6 5 4 3 2 1 0 fonc. inutilis inutilis bidirectionnel IRQ via Ack selec printer reset printer auto linefeed strobe

tableau 4.3: Registres du 8255


Son protocole simpli est dcrit par la gure 4.4 suivante :

gure 4.4: Protocole Centronics       les donnes sont appliques sur le port (D0-D7) ; imprimante occupe ? (busy ?) le programme manipule la ligne nStrobe, attend 1 s puis re-manipule la ligne ; les donnes sont lues sur front montant de nStrobe ; l'imprimante indique son tat par la ligne Busy ; Une fois les donnes acceptes par l'imprimante, elle envoie un ACK (impulsion ngative 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 rception ACK. De plus, dans ce mode, c'est le hardware qui eectue la totalit du Handshaking a votre place. La seule chose qui incombe au programmeur est d'crire l'octet de donnes sur le port. Ce mode permet des transferts rapides d'octets dans les deux directions. Les signaux de protocole d'accord font la distinction entre transfert de donnes et d'adresse. Il possde des registres supplmentaires (voir tableau ??). 63

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 4. Port Parallle

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 commuter rapidement le sens de transfert, le port EPP est utile pour des dispositifs qui changent des petits blocs de donnes avec de frquents changements de direction, tels que lecteurs de disques externes ou interfaces de rseaux. Un port EPP fait la distinction entre deux types d'informations, habituellement dnis comme donnes et adresses. Le mode EPP permet quatre oprations : criture d'adresse (gure ??), criture de donnes (gure ??), lecture d'adresses (gure ??), lecture de donnes (gure ??), chacune ayant un protocole d'accord dirent. Les transferts EPP dirent du mode SPP par le fait que les circuits du port gnrent automatiquement des signaux de contrle et dtectent les rponses venant de l'autre extrmit. Il n'est donc pas ncessaire d'instructions par un logiciel pour charger l'tat du signal de sortie Strobe ou pour lire une entre occupe. Les oprations de donne et d'adresse en mode EPP utilisent dirents signaux de contrle pour verrouiller les octets dans le dispositif de rception. critures et lectures d'adresse utilisent nAStrobe (C3), lectures et critures de donnes utilisent nDStrobe (C1) : ceci est un moyen simple pour que le rcepteur fasse la distinction entre les deux types d'information. Un port EPP utilise 8 registres (tableau 5), cinq de plus que le port original SPP.

gure 4.6: Lecture et criture d'une donne en mode EPP 64

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

4.2. Modes de fonctionnement

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

4.2.3 Mode tendu ECP


Ce port possde aussi des registres supplmentaires (voir tableau ??).

gure 4.8: Signaux et DB25 en mode tendu (ECP) Le mode ECP permet galement le transfert rapide de donnes dans les deux sens. Il comporte un tampon FIFO de 16 octets pour garder les donnes envoyer et les donnes reues. Pour les transferts les plus rapides, le port ECP peut compresser les donnes pour conditionner l'information en moins d'octets. L'accs direct la mmoire (DMA) permet l'unit centrale de faire d'autres actions pendant que les donnes sont transmises entre le tampon et la mmoire. En plus d'tre rapide, les transferts en mode ECP sont exibles : ils peuvent s'accommoder des priphriques plus lents, parce que le protocole d'accord n'a pas de timeout automatique. Les signaux de protocole d'accord font la distinction entre donnes et signaux de contrle. Un octet de contrle peut contenir une adresse ou une information de compression de donnes. Du ct de l'hte, le port ECP contient un tampon FIFO de 16 octets qui stocke les donnes envoyer et les donnes reues. L'unit centrale (CPU) peut crire une srie d'octets dans le tampon et les circuits du port veillent les crire dans la mme squence sur les sorties Donnes du port. Dans le sens oppos, les tampons stockent une srie d'octets reus et la CPU lit chaque octet avant que le suivant n'arrive. Si le PC envoie des donnes vers un priphrique lent, le PC peut crire jusqu' 16 octets dans le tampon FIFO et faire d'autres choses ensuite. Le port ECP transfrera les donnes automatiquement lorsque le priphrique sera prt. De mme, si un priphrique rapide veut envoyer des donnes vers un PC, le tampon FIFO du PC en stocke jusqu' 16 octets de donnes reus, que le PC pourra lire son gr. 65

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 4. Port Parallle

gure 4.9: Commande et Data forward

gure 4.10: Commande et Data reverse

4.3 Programmation
4.3.1 Interruption logicielle
Le paramtrage des ports parallles est beaucoup plus simple que celui des ports sriels. En standard, le PC est quip d'un seul port parallle, mais il serait tout fait possible d'en rajouter un second. Dans la plupart des BIOS, une interruption est d'ailleurs rserve d'oce cet eet, que le port soit prsent ou non. Dans de nombreux cas, le second port est dsactiv et l'IRQ 5 est rutilise pour un autre composant. 66

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

4.3. Programmation

4.3.2 Tableau des registres pour tous les modes


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

Type de Port

Fonction

67

Chapitre 5

Port Srie
Sommaire
5.1 5.2 5.3 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.1 Gnralits
La liaison srie asynchrone est couramment utilis en informatique et en automatique (de manire plus gnrale en pilotage de procds) pour traiter tout problme de transmission. Pour transporter l'information, on utilise la tension (RS 232-liaison monopoint, RS422-liaison multipoint, RS485liaison multipoint bidirectionnelle) ou le courant (boucle de courant 20mA) selon la norme EIA 232 (Electronic Industry Associate) depuis 1969 puis rvalue en 1991.

gure 5.1: Liaisons multipoint et directe point point (utilisant la tension) La liaison RS232 est simple, universelle, parfaitement connue et supporte par un grand nombre de priphriques. Contrairement la liaison parallle, elle autorise de grandes distances mais possde des rglages plus compliqus. Ceci justie une tude dtaille.

5.1.1 Format et Principe


Schma de principe : 68

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.1. Gnralits

gure 5.2: Principe d'une communication srie RS232 Pour que deux ordinateurs puissent communiquer entre eux, un protocole de transmission bien prcis doit tre respect pour que l'metteur et le rcepteur se comprennent. Pour dterminer l'afcacit de la ligne, il s'agit avant tout de reconnatre les donnes utiles (caractre, mot, message) des donnes de contrle (autres bits).

gure 5.3: Ecacit d'une communication srie RS232 Le format d'une trame est le suivant : attente START DONNEES PARITE (facultatif) STOP 1 bit 5,6,7 ou 8 bits 1 bit 1,1.5 ou 2 bits

tableau 5.1: Protocole : format d'une trame


La transmission des caractres ne peut fonctionner correctement qu' condition que les dirents paramtres variables de cette trame soient connus aussi bien de l'metteur que du rcepteur. Il est alors ncessaire d'ajuster les paramtres suivants :  la vitesse de transmission,  le nombre de bits du caractre transmettre,  la parit,  le nombre de bits de stop,  le protocole (handshaking matriel ou logiciel). Lorsqu'aucun caractre n'est transmis, le niveau de la ligne de transmission est l'tat haut (1 logique) : ceci permet de dissocier le bruit d'un changement d'tat. La synchronisation de l'horloge d'chantillonnage des bits la rception est assure l'aide du bit de Start. Sur une liaison srie au repos, on doit observer un 1 logique (voir schma ci dessous) : 69

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

gure 5.4: Niveau logique en communication srie RS232 C'est partir du Start que le rcepteur se synchronise et chantillonne les autres bits du caractre. Donc si la ligne passe l'tat bas / 0 logique (rle du Start), le rcepteur sait que des bits (utiles : donnes caractre) vont tre transmis (dbut de communication). Le rcepteur recevra ensuite les bits de donnes (cod sur 5,6,7 ou 8 bits) en commenant par le LSB suivis d'un bit de parit (facultatif) et d'un (ou plusieurs) bit de Stop qui indique au rcepteur la n de transmission de la donne. La transmission d'un caractre se termine toujours de cette faon et le niveau logique de la ligne revient l'tat haut. En ce qui concerne le bit de parit, il sert dtecter un ventuel problme lors de la transmission des donnes. On distingue la parit paire et impaire :  parit paire : mettre le bit de parit 1 ou 0 pour assurer un nombre total (y compris le bit de parit) pair de bit 1 ;  parit impaire : mettre le bit de parit 1 ou 0 pour assurer un nombre total (y compris le bit de parit) impair de bit 1.

gure 5.5: Parit

gure 5.6: Transmission de C, 2 Stop, parit impaire, ASCII non tendu Les frquences de transmission autorises sont prcises par la norme RS232. On utilise habituellement des liaisons 300, 1200, 2400, 4800, 9600 et 19200 Bauds. En rsum : 70

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.1. Gnralits

gure 5.7: Trame de communication RS232 : rsum

5.1.2 Norme RS 232


La norme RS232 dnit des caractristiques lectriques (niveaux des signaux), mcaniques (connecteurs) et fonctionnelles (nature des signaux). Les valeurs des tensions que les interfaces sries doivent fournir (et reconnatre) aux matriels connects sont les suivantes (logique ngative) :  0 logique : pour une tension allant de +3 +25V ;  1 logique : pour une tension allant de -3 -25V. Gnralement, les signaux envoys sont compris entre -15 et + 15 V (tensions d'alimentation des A-Op).

gure 5.8: Relation entre niveau logique et tension

5.1.3 Brochage du port srie standard


Le port srie permet de connecter un grand nombre de priphriques tels que :  un modem,  une imprimante,  un autre ordinateur,  un lecteur de codes barres, 71

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

 etc . . . La plupart des priphriques ncessitant une connexion bilatrale pour communiquer avec un PC utilisent un port srie standard RS232.

DB9 DB25 Signal


1 2 3 4 5 6 7 8 9 8 3 2 20 7 6 4 5 22 DCD RxD TxD DTR SG DSR RTS CTS RI

Fonction
dtection de porteuse (Data Carrier Detect ) rception des donnes (Received Data ) mission des donnes (Transmitted Data ) terminal prt (Data Terminal Ready ) masse (Signal Ground ) donnes prtes (Data Set Ready ) demande d'mission (Request To Send ) prt pour l'mission (Clear To Send )

Sens
E1 E S S1 E1 S1 E1

indicateur de sonnerie (modem) (Ring Indicator ) E1

tableau 5.2: Brochage du port srie


E et S signient entre et sortie tandis que E1 prcise une entre active au niveau haut (niveau logique 1) et S1 une sortie active au niveau haut .

gure 5.9: Signaux sur les connecteurs DB25 et DB9

5.1.4 Description des signaux


Les quipements qui peuvent tre connects la liaison srie RS232 sont de 2 types : 1. DTE (Data Terminal Equipment) : les quipements de terminaux de donnes gnrent les donnes transmettre (exemple : ordinateur), 2. DCE (Data Communication Equipment) : les quipements de communication de donnes transmettent les donnes sur la ligne de communication (exemple : modem). Les dirents signaux utiliss pour la communication sont rpartis de la manire suivante :

PHYSIQUE - SG est la liaison de masse lectrique qui peut tre confondue avec la masse mcanique. LIGNE de donnes - TxD est la ligne d'envoi des donnes. - RxD est la ligne de rception des donnes. VALIDATION d'mission-rception
72

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.1. Gnralits

- RTS est une ligne de demande d'mission. La ligne est positionne l'tat haut lorsque le terminal veut envoyer des donnes. (DTE DCE) - CTS est une ligne d'invitation mettre. Elle passe au niveau haut lorsque le DTE attend des

CONNECTION de ligne - DTR est positionn par l'metteur (terminal) l'tat haut pour signaler au rcepteur (ordinateur) qu'il est en ligne et qu'il est prt mettre des donnes. - DSR indique (si niveau haut) que l'ordinateur est prt recevoir les donnes du terminal. Fonctions du MODEM - DCD n'est utilis en principe que sur les modems. C'est la ligne de dtection de la porteuse qui passe l'tat haut lorsque le modem reoit une porteuse valide (tonalit). Il permet un modem d'avertir le terminal qu'il est en relation avec un autre. - RI est une ligne utilise seulement par les modems. C'est l'indication de sonnerie. Par cette ligne, le modem avertit l'ordinateur que le tlphone sonne (en gnral, fonction intgre).

donnes du DCE. Il signale qu'il peut recevoir les donnes du DCE et qu'il peut donc les lui envoyer.

5.1.5 Modalits de transmission (simplex-duplex)


La transmission entre le DTE et le DCE peut se faire de plusieurs manires :  dans un seul sens (DTE vers DCE ou DCE vers DTE). On parle de liaison simplex (voir gure ci-dessous). Dans ce cas, 2 ls susent : l'un pour transporter les donnes, l'autre comme rfrence (la masse en gnral),  dans les deux sens (bidirectionnel) : les dispositifs DCE et DTE doivent pouvoir mettre et recevoir des donnes. On parle de liaison duplex (voir gure ci-dessous). Si la communication est alterne : half-duplex, simultane : full-duplex.

gure 5.11: Connections pour liaisons simplex et duplex 73

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

5.2 Protocoles
Lorsqu'un DTE met plus de donnes que ne peut accepter un DCE ou pour dterminer si le DTE ou si le DCE est en service, on utilise les signaux de protocole d'accord (" Handshake "). Les signaux correspondants permettent de surveiller l'tat d'un autre et de rpondre en consquence. Ils indiquent la faon par laquelle le ot des donnes passant dans l'interface est rgul et command. Selon la nature (DTE ou DCE) des appareils connects, le type de connexion et le protocole d'change pourra tre dirent. Il existe 2 grandes familles de protocole d'accord :  Matriel : au niveau physique (ls, tensions). Utilisable seulement si les appareils concerns peuvent tre connects par cbles. (exemples : DTR-DSR et RTS-CTS).  Logiciel : au niveau du contenu des donnes. Ces dernires contiennent des caractres spciaux, aussi appels caractres de contrle (Xon-Xo).

5.2.1 Liaison DTE-DCE


Aux extrmits du cble on trouve un connecteur DB25 femelle (cot ordinateur) et un connecteur DB25 ou DB9 mle (cot modem). Les connections sont directes (" cbles droits ").

gure 5.12: Connections DTE-DCE La communication se droule en plusieurs phases (attention : niveau haut = 0 logique) :

gure 5.13: direntes phases d'une communication DTE vers DCE 1. DTR passe " 1 ". Le DTE indique qu'il est prt et demande la connexion de la ligne. 74

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.2. Protocoles

2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

DSR passe " 1 ". Le DCE rpond qu'il est prt : la ligne est connecte. RTS passe " 1 ". Le DCE indique qu'il veut mettre (vers l'extrieur) CTS passe " 1 ". Le DCE indique qu'il est prt mettre des donnes sur la ligne. Emission des donnes. RTS passe " 0 ". Le DTE suspend l'mission. RTS ne peut pas repasser " 1 " tant que CTS = 1. CTS passe " 0 ". Le DCE indique qu'il ne peut plus mettre de donnes. (phase 8-10) L'mission est de nouveau valide. CTS peut ventuellement repasser " 0 " pour demander au DTE une interruption du transfert des donnes pendant un laps de temps dni d un problme (de ux, de synchronisation,. . .). (phase 11-12) L'mission est suspendue. (phase 13) DTR passe " 0 ". Le DTE demande la dconnection de la ligne. (phase 14) DSR passe " 0 ". Le DCE rpond et la ligne est dconnecte.

On voit que ces lignes font partiellement double emploi dans une communication full-duplex. C'est pourquoi frquemment un DTE pourra ne commander que DTR ou RTS et ne scruter que l'une ou l'autre des lignes DSR, CTS et/ou CD. Un DCE pourra ne scruter que DTR ou RTS et ne commander que l'une ou l'autre des lignes DSR, CTS et/ou CD.

5.2.2 Liaison DTE-DTE sans contrle de ux


Pour connecter 2 DTE entre eux par une liaison srie RS232, il faut au minimum 3 ls : un pour les donnes qui circulent dans un sens, un pour les donnes qui circulent dans l'autre sens et un pour la masse lectrique des signaux. On ralise donc le cblage suivant (DB25) :

gure 5.14: DTE-DTE half-duplex sans contrle C'est une liaison half-duplex. En eet, B doit attendre de recevoir la donne en 2 avant de pouvoir mettre sur A en 3. Si on veut initier une liaison full-duplex, l'mission de l'un doit correspondre la rception de l'autre. On doit donc croiser les connexions (soit directement sur l'quipement, soit sur le cble). Cette liaison 3 ls est minimale.

gure 5.15: DTE-DTE full-duplex sans contrle 75

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

Attention, personne ne vrie si son correspondant est prt mettre, prt recevoir ou tout simplement sous tension !

5.2.2.1 Null modem


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

gure 5.16: Cblage Null Modem L'ide est de faire croire que l'ordinateur A parle avec un modem B plutt qu'avec un ordinateur B (mulation). La ligne DTR est reboucle sur DSR et DCD. Ainsi, lorsque DTR est mis 1, le DSR et DCD deviennent immdiatement actifs. L'ordinateur A pense alors que le modem (virtuel) B auquel il est connect est prt et a dtect la porteuse d'un autre modem. Comme les ordinateurs communiquent la mme vitesse (pas de contrle de ux) RTS et CTS sont boucles ensemble. Ainsi, lorsque l'ordinateur veut mettre, il positionne RTS 1 et reoit immdiatement 1 sur CTS (autorisation d'mettre) et commence donc son mission.

5.2.3 Liaison DTE-DTE avec contrle de ux matriel


5.2.3.1 Liaison complte
D'autres signaux ont t ajouts ces trois lignes de base an de permettre un contrle du droulement de la liaison par l'un ou l'autre des quipements et viter par exemple qu'un quipement envoie des informations un autre qui n'est pas prt 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 contrle de ux

Remarque 5.1 (Problme). Il faut viter que chaque DTE attend une autorisation sur l'une ou

l'autre de ses lignes CTS, DSR et CD car on attendra indniment que la conversation commence. Cependant, on remarquera que chacun des correspondants manipule ses lignes RTS et DTR ds 76

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.2. Protocoles

qu'il est prt et conclura que l'on peut servir les CTS, DSR et CD de chacun par des lignes RTS et DTR de l'autre. s

Problme de rgulation de ux de donnes : il serait extraordinaire que l'metteur envoie des

donnes exactement au rythme optimal pour le rcepteur. S'il est plus lent, cela n'est pas grave. Par contre, s'il est plus rapide que le rcepteur, il est possible de perdre des donnes. Pour viter ce problme, il faut :  soit que le rcepteur traite les donnes plus vite qu'elles n'arrivent,  soit qu'il fasse stopper le ux de donnes lorsqu'il risque d'tre momentanment dpass. pour ce faire, il faut que le rcepteur avertisse l'metteur. L'ide la plus naturelle est de cbler la totalit des signaux an de pouvoir contrler les ux.

gure 5.18: DTE-DTE avec contrle de ux complet

Le rcepteur indique l'metteur qu'il est prt recevoir une donne. L'metteur met alors la donne sur la ligne de transmission. C'est le Handshaking. Dans le cas o des signaux physiques sont chargs de contrler le ux des changes de donnes, on parlera de handshaking matriel caractris par le terme de protocole RTS/CTS.

5.2.3.2 Protocole RTS / CTS


Lorsque l'metteur veut mettre ses donnes, il doit positionner la ligne RTS l'tat haut pour demander au rcepteur s'il est prt accepter ces donnes. Le rcepteur, lorsqu'il est prt recevoir les donnes, va positionner le signal CTS de l'metteur l'tat haut pour lui indiquer qu'il est prt. L'metteur n'envoie ses donnes que si la ligne DTR est mise l'tat haut par le rcepteur. Le rcepteur le constate en la surveillant par son entre DSR. 77

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

Phase 1 : Connexion de ligne sur les systmes A et B. Les signaux DTR et DSR peuvent tre valids suite une procdure de rponse automatique transmise par le circuit RI (125). Phase 2 : Validation de l'mission sur A (RTS=0 et CTS=0). L'ETCD A met une porteuse sur la ligne. gure 5.19: Exemple de trame en protocole RTS CTS Phase 3 : Dtection de porteuse par l'ETCD B (DCD=0). Phase 4 : Transmission de donnes. Phase Rsum : 5 : Arrt de l'mission par A (RTS=1 et CTS=1). Phase 6 : Dconnexion de la ligne sur A et B (DTR=1 et DSR=1). E T D A E C D A E C D B E T D B TD DTR RTS DSR CTS Donnes

DSR DCD

RD DTR 1 2 3

Donnes 4 5 6

Figure 7 :Direntes Etablissement de la liaison deux systmes avec2 laDTE norme V24. gure 5.20: phases d'une entre communication entre (A et B) IV.3.Cblages
1. Connexion de ligne sur les systmes A etde B. Les signaux DTR et DSR peuvent tre valids Emission donnes TD 103de : TD suite une procdure rponse automatique transmise103 par: le circuit RI. Rception de donnes 2. Validation de l'mission sur A (RTS = 1 et CTS = 1). Le 104DCE : RD A met une porteuse sur la 104 : RD Demande d'mission ligne. 105 : RTS E : RTS E 105par 3. Dtection de porteuse le DCE B (DCD = 1). Prt mettre T 106 : CTS 106 : CTS T 4. Transmission de donnes C ETCD prt T 107 : DSR D DSR 5. Arrt de l'mission 107 par :A (RTS = 0 et CTS = 0) D ETTD prt = 0 et DSR 108 6. Dconnections de la ligne sur A et B (DTR = 0) : DTR 108 : DTR Dtection porteuse 109 : DCD 109 : DCD 78 Masse signal 102 : SG 102 : SG

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.2. Protocoles

5.2.4 Liaison DTE-DTE avec contrle de ux logiciel


5.2.4.1 Protocole ETX / ACK
C'est le plus simple des protocoles logiciels. Les donnes sont envoyes par blocs de longueur xe. Aprs mission d'un bloc, le caractre ASCII ETX (0x03, envoy) est envoy. Le rcepteur rpond par le caractre ASCII ACK (0x06, reu) si la transmission s'est correctement droule ou par le caractre NAK (0x015, non reu) dans le cas contraire. Ce protocole ne ncessite qu'une liaison sur 3 ls. Le reste de la ngociation entre l'metteur et le rcepteur pour changer des donnes se fait par logiciel. Dans le cas o des caractres particuliers sont chargs de contrler le ux (la vitesse) des changes de donnes, on parlera de handshaking logiciel , caractris par le terme de protocole Xon/Xo.

5.2.4.2 Protocole Xon / Xo


Ce protocole est bas sur les caractres XON (DC1,code ASCII 0x11) et XOFF (DC3,code ASCII 0x13) : Le rcepteur gre un buer. Les donnes sont traits par blocs de longueur variable. Lorsque son buer est plein 80 %, le rcepteur envoie le caractre XOFF. L'metteur lorsqu'il reoit le caractre XOFF doit immdiatement suspendre son mission. Lorsque le rcepteur a vid son buer 50%, il envoie un caractre XON l'metteur. A la rception de XON l'metteur peut reprendre son mission.

gure 5.21: Exemple de trame en protocole Xon - Xo

Il est possible que l'metteur ne reoive pas ou perde les caractres XON - XOFF. Pour pallier ces problmes, lorsque l'metteur n'a pas reu de caractres depuis un certain temps, ce dernier peut reprendre de sa propre initiative le transfert. Si le rcepteur n'est pas d'accord, ce dernier pourra toujours r-mettre un XOFF. 79

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 5. Port Srie

5.3 Annexes
5.3.1 Algorithme Xon-Xo

gure 5.22: Algorithme Xon-Xo

5.3.2 Procdure de test : rebouclage entres / sorties


Pour dtecter (procdure de LOOPBACK) si une panne dans la transmission est matrielle ou logicielle, il sut de connecter TxD RxD, DTR tant reboucls sur DSR et DCD et RTS est boucl sur CTS.

5.3.3 Comment reconnatre un DTE d'un DCE ?


Sur une DB25, un DTE dlivre une tension non nulle sur les signaux TD (mesurer 2-7), RTS et DTR tandis qu'un DCE dlivre une tension non nulle sur les signaux RD (mesurer 3-7), CTS, DSR et DCD. DTE-DCE : connections sur DB25 80

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

5.3. Annexes

5.3.4 Protocole d'change sur PC

gure 5.23: Proprits du port COM 1 sur PC

5.3.5 Algorithmes mission - rception d'un caractre

gure 5.24: Algorithmes d'mission / rception d'un caractre ASCII avec utilisation des buers 81

Chapitre 6

UART
Sommaire
6.1 6.2 6.3 6.4 6.5 Introduction . . . . . . . . . . . . . Conguration . . . . . . . . . . . . . Les Registres de l'UART . . . . . . Programmer l'UART . . . . . . . . Annexe : architecture interne d'un . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART 16550 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 83 84 92 95

6.1 Introduction
Aprs avoir tudi le mode de fonctionnement d'une liaison srie RS232, nous allons tudier comment programmer le contrleur d'interface (UART) charg de piloter cette liaison.

6.1.1 Gnralits
L'UART 8250-16550 (Universal Asynchronous Receiver Transmitter ) constitue le cur de tout port srie. Il contrle compltement la conversion et des donnes (natives) parallles de l'ordinateur (CPU) en format srie, puis la conversion des donnes srie en format parallle ainsi que le chargement / dchargement des registres internes.

gure 6.1: UART : architecture interne 82

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.2. Conguration

La RS232 est l'interface standard, le modem ralise la CNA / CAN, et les changes se font par une liaison tlphonique moyennant une modulation FSK (Frequency Shift Key) selon le schma de principe suivant :

gure 6.2: Transmission avec modem Les PC originaux utilisaient l'UART 8250, qui est toujours utilise par un grand nombre de cartes adaptateurs srie du march. L'volution a conduit l'UART 16550 (FIFO : tampon 16 octets, dbit 115.2 KBps communications rapides) et trs rcemment l'UART 16750 (FIFO 64 octets, supporte une liaison RS485, mode 4 canaux). Son architecture interne est donne en annexe (voir section ??). Les dirences se situent principalement dans l'apparition de 2 FIFO au niveau des registres d'mission / rception pour contrler les changes.

6.1.2 Avantages de l'UART


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

6.2 Conguration
L'UART peut tre utilise selon 2 modes :  scrutation ( polling ) : le CPU lit en permanence les lignes pour dterminer l'tat de la transmission (prt mettre TxRDY, donne reue RxRDY).  interruption ( interrupt ) : chaque fois qu'un caractre est reu par un port srie, il doit attirer l'attention de l'ordinateur en activant un canal de requte d'interruption (IRQ). Les ordinateurs bus ISA (dsuets) comportent de 8 16 canaux de ce type. Les ordinateurs actuels en comportent 256 (mais tous ne concernent pas la gestion des communications). C'est gnralement la puce contrleur d'interruption (PIC) 8259 qui traite ces requtes d'attention. Sur une conguration standard, le port srie COM1 utilise l'IRQ 4 et le port srie COM2 utilise l'IRQ3. Lorsqu'un port srie est install sur un PC, il doit tre congur pour utiliser des adresses d'E/S spciques et des interruptions. Il est prfrable d'utiliser les standards existants COM1 et COM2 qui sont respectivement situs aux adresses de base 0x3F8 et 0x2F8. 83

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

gure 6.3: IRQ pour UART sur PC Connaissant l'adresse mmoire du port srie concern, comment dialoguer avec l'UART 16550 an de congurer la communication ? 1. en utilisant les fonctions de l'interruption logicielle 0x14(voir chapitre 3, 2. en programmant directement les registres du 16550.

6.3 Les Registres de l'UART


Le 16550 comporte 12 registres de 8 bits classs en trois catgories : 1. les registres de contrle : DLL, DLM, IER, LCR, MCR, FCR, SCR. 2. les registres d'tat : LSR, MSR et IIR. 3. les registres de donnes : RBR et THR. oset 0 DLAB 0 0 R/W R W NOM RBR THR bit 0 D0 D0 bit 1 D1 D1 bit 2 D2 D2 bit 3 D3 D3 bit 4 D4 D4 bit 5 D5 D5 bit 6 D6 D6 bit 7 D7 D7 1 table des registres UART 2 3 0 x x x R/W R W R/W IER IIR FCR LCR ERDA IP FE WLS0 ETD ID1 RFR WLS1 ERLS ID2 TFR STB EMS 0 DMS PEN 0 0 TTL EPS 0 0 TTM SP 0 FE1 RTL BC 0 FE2 RTM DLAB 4 x R/W MCR DTR RTS OUT1 OUT2 LOOP AFE 0 0 5 x R LSR DR OE PE FE BI THRE TSRE RFE 6 x R MSR DCTS DDSR TERI DDCD CTS DSR RI DCD 7 1 R/W SCR P0 P1 P2 P3 P4 P5 ILS/OS 0

1 R/W DLL B0 B1 B2 B3 B4 B5 B6 B7

1 R/W DLM B8 B9 B10 B11 B12 B13 B14 B15

x x x x x x x x

tableau 6.1: Tables des registres UART


L'adresse physique de chaque registre est calcule relativement l'adresse de base. Si l'adresse de base de l'interface est 3xF8 (COM1), l'adresse du LCR sera 0x3F8 + 0x003 = 0x3FB. L'accs aux registres se fait par l'utilisation des fonctions (langage C) spciques de lecture / criture :
84

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.3. Les Registres de l'UART

 char inp(int AdressePort) lit un caractre (ASCII) sur le port situ l'adresse AdressePort et le retourne  outp (int AdressePort, char val) crit la valeur val sur le port situ l'adresse AdressePort. Certains registres possdent la mme adresse physique mais ils ne peuvent tre accds simultanment (lecture ou criture). Cela ne pose donc pas de problme (conomie de registre physique). Nous allons tudier progressivement (selon leur adresse dans la table) chaque registre.

6.3.1 RBR/THR mission/rception


RBR (Receiver Buer Register) : registre tampon de rception, coupl au RSR (Receiver Shift Register) qui est un registre dcalage des donnes reues ; THR (Transmitter Holding Register) : registre d'attente d'mission, coupl au TSR (Transmit Shift Register) qui est un registre dcalage des donnes mises.
Le chargement et la lecture s'eectuent par le CPU au travers des registres d'mission THR et de rception RBR situs tous deux l'adresse relative +0 et possdant 8 bits de donnes (D0 D7). Le bit D0 est le LSB. Il est le premier tre mis ou bien reu. On crit ( W ) la donne dans THR tandis qu'on la lit ( R ) dans RBR.

gure 6.4: Principe d'mission - rception

6.3.1.1 Mcanisme d'mission (sans FIFO)


La donne transmettre transite sur le bus interne et arrive dans le registre THR contrl par d'autres registres. La donne est ensuite transfre dans le registre dcalage d'mission (TSR) an de srialiser la donne sur la ligne d'mission TxD. Lorsque le registre d'mission est vide , l'tat est communiqu au systme via THRE. 85

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

gure 6.5: Mcanisme d'mission sans FIFO

Exemple de squence temporelle en mission :

gure 6.6: Exemple de squence temporelle en mission

6.3.1.2 Mcanisme de rception (sans FIFO)


La donne provenant de la ligne RS232 est convertie en TTL (exploitable par le registre) puis est charge dans le registre dcalage de rception (RSR) o l'on dsrialise la donne. Elle est ensuite transfre dans le registre de rception (RBR) sous contrle d'autres registres avant de transiter sur le bus interne en direction du CPU. 86

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.3. Les Registres de l'UART

gure 6.7: Mcanisme de rception sans FIFO

6.3.2 DLL / DLM vitesse de transmission


DLL (Divisor Latch Less Signicant Byte) : registre LSB de division d'horloge ; DLM (Divisor Latch Most signicant Byte) : registre MSB de division d'horloge.
L'accs se fait aux adresses relatives +0 (DLL) et +1 (DLM) mais ncessite que le bit DLAB soit positionn 1 (pour ne pas accder par dfaut aux RBR-THR en +0 et IER en +1). Le chargement se fait sur 2 registres car on a besoin de coder les valeurs sur 2 octets. Ces registres permettent de diviser la frquence d'entre (dj pr-divise par 16) par la valeur charge. Sur les PC, les frquences d'horloges sont de 1.8432 et 3.072 MHz. Le mode de calcul est le suivant : vitesse transmission = frquence horloge 16 (256 DLM + DLL)

Ci dessous, le tableau rsum des valeurs charger pour une vitesse (standard de 1, 8432M Hz ) de transmission : Vitesse (bauds) valeur (D) valeur (H) 50 2304 300 384 1200 2400 4800 96 48 24 9600 12 19200 56200 6 0x06 2 0x02

0x900 0x180 0x60 0x30 0x18 0x0C

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'accs se fait l'adresse relative +1 avec DLAB 0. Il permet de spcier les conditions de gnration des interruptions (autorise les interruptions en rception ou en transmission et l'accs LSR). Lorsqu'un bit est zro, cela signie qu'il n'y aura pas de signal d'interruption mis pour l'vnement dsign. Si tous les bits sont 0, cela signie qu'il n'y aura aucun cas d'interruption produite par le circuit vers le gestionnaire d'interruption du PC (8259). 87

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

 bit 0 (ERDA : Enable Receive Data Avalaible int) : interruption quand donnes reues dans RBR (0 = non et 1 = oui).  bit 1 (ETD : Enable Transmit holding register Data available interrupt) : interruption produite lorsque le registre d'attente d'mission THR devient vide (n d'mission d'un caractre)  bit 2 (ERLS) : Enable Receiver Line Status interrupt) : interruption autorise lors d'un changement d'tat de la ligne de rception.  bit 3 (EMS : Enable Modem Status int) : interruption autorise lors changement d'tat du modem.  bits 4 7 inutiliss et toujours zro.

6.3.4 IIR nature des interruptions


IIR (Interrupt Identication Register) : registre d'identication des interruptions.
L'accs se fait l'adresse relative +2 en lecture seule. Il permet de traiter une interruption selon 4 niveaux de priorit (interface avec un microprocesseur).  bit 0 (IP : Interrupt Pending) : 0 signie interruption demande et 1 dans le cas contraire,  bits 1 3 (ID1-ID2-ID3 : IDenticator interrupt bit 1, 2 et 3) indiquent la nature, la source et la consquence de l'interruption selon le tableau ??,  bit 4-5 : 0 (rservs),  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 inactives. FE2 = 1 FIFOs actives. FE1 = 0 FIFOs actives mais inutilisables. bits 3 0 ID3 ID2 ID1 IP 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 Priorit aucune 1 2 2 3 4 Type aucune modif tat ligne rception data reue dispo temps out THR vide modif modem Interruptions Source aucune erreur rception (OE,FE,PE,BI) rception RBR ou seuil FIFO RBR char ds FIFO RBR RxRDY CTS,DSR,RI,DCD changs Arrt aucune R-LSR R-RBR R-RBR R-IIR ou W-THR R-MSR

tableau 6.3: Priorit des interruptions

6.3.5 FCR rglages des buer FIFO


FCR (FIFO Control Register) : registre de rglage des FIFO : buer d'mission / rception.
L'accs se fait l'adresse relative +2 en criture seule. Ce registre valide, eace les FIFO, rgle le niveau du trigger (en octets) des tampons et slectionne le valeur du signal en DMA.  bit 0 (FE : Fifo Enable) : 1 pour valider les FIFO RBR et THR. 0 eace la totalit des FIFO et empche l'criture des autres bits du registre.  bit 1 (RFR : Receiver Fifo Reset) : eace contenu FIFO RBR (et pas le RSR lui-mme). bistable (revient 0 automatiquement aprs usage).  bit 2 (TFR : Transmit Fifo Reset) : eace contenu FIFO THR (et pas le TSR lui-mme). bistable (revient 0 automatiquement aprs usage). 88

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.3. Les Registres de l'UART

 bit 3 (DMS : Dma Mode Select) :RxRDY et TxRDY passent de 1 0 (deviennent inactifs).  bit 4-5 (TTL-TTM : Transmit Trigger level LSB-MSB) : dnissent le seuil max atteindre (en octets)sur FIFO THR (=TFR) avant de dclencher une interruption FIFO.  bit 6-7 (RTL-RTM : Receiver Trigger level LSB-MSB) : mmes niveaux mais pour FIFO RBR (RFR) TTM TTL (resp. RTM) (resp. RTL) 0 0 1 1 0 1 0 1 seuil 1 octet 4 octets 8 octets 16 octets

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


Exemple de rglage des seuils sur PC :

gure 6.8: Rglages des FIFO sur PC

6.3.5.1 Fonctionnement des FIFO


En rception, lorsqu'un UART reoit un octet par son entre srie, elle le "dsrialise" et le stocke dans un registre interne (RBR) et prvient (par interruption), qu'il est disposition du programme de traitement. Les donnes successives peuvent continuer arriver et sont stockes dans le FIFO. Le processeur doit lire le RBR (et ainsi le vider) avant que le FIFO RBR soit plein. Ceci exige un traitement des interruptions rapide. En mission, lorsqu'un UART veut mettre, il reoit en parallle les donnes destines au registre d'mission (THR). Il doit attendre que la ligne soit libre (handshaking d'autorisation d'mettre), puis il srialise et prvient par une interruption que le registre de sortie (THR) est libre. Avantage de FIFO THR : pas besoin d'attendre que le registre dcalage ait ni avant d'envoyer les autres donnes 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 mcanismes d'enregistrement (push) et de rcupration (pop) sont nettement plus rapides que les accs classiques (alatoires). Les piles du type FIFO font partie de ces mcanismes. En contrepartie de leur rapidit, elles ne peuvent rcuprer qu'un seul octet la fois (le dernier entr). On comprendra que l'eet tampon est d'autant plus ecace que le nombre d'octets pouvant tre stock est grand. Ce nombre est rglable 89

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

(gure, bits 4-7). Si le nombre d'octets est susant, le processeur ne sera pas interrompu pendant ses activits et aura le temps de vider les FIFO entre des critures (ou des lectures) dans ce buer.

6.3.6 LCR rglages de la transmission


LCR (Line Control Register) : registre de commande de la ligne de communication.
L'accs se fait l'adresse relative +3. Ce registre permet de spcier le format de la trame de la liaison srie (vitesse de transmission, nombre de bit de donnes pour le codage du caractre, nombre de bits stop et type de parit). Il permet l'accs aux registres de rception (RBR) et d'mission (THR).  bits 0 et 1 (WLS0 et 1 : World Length Select bit 0 et 1) : nombre de bits du caractre (codage sur 5, 6, 7 ou 8 bits)  bit 2 (STB : STop Bits) : nombre de bits Stop  bit 3 (PEN : Parity ENable) : validation de parit.  bit 4 (EPS : Even Parity Select) : parit paire ou impaire.  bit 5 (SP : Sticky Parity) : forage de parit (inverse de EPS).  bit 6 (BC : Break Control) : contrle de break (0 = hors service, 1 = mise zro de la sortie TXD tant que BC=1).  bit 7 (DLAB : Divisor Latch Access Bit) : DLAB=1, autorise l'accs aux registres de division DLL et DLM. DLAB = 0, permet l'accs aux registres RBR, THR et IER. STB WLS1 WLS0 0 1 1 1 1 x 0 0 1 1 x 0 1 0 1 Codage (payload) STOP bits 5,6,7 ou 8 5 6 7 8 1 1,5 2 2 2

tableau 6.5: Nombre de bits de codage des donnes (payload) et de bits de STOP
SP EPS PEN x 0 0 1 1 x 0 1 0 1 0 1 1 1 1 type de parit NP : No Parity OP : Odd Parity EP : Even Parity HP : High Parity LP : Low Parity signication aucune impaire paire haute : 1 basse : 0

tableau 6.6: Dirents types de parits

6.3.7 MCR rglages du modem


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

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.3. Les Registres de l'UART

 bit 2 (OUT1) : valide (1) ou invalide (0) la sortie OUT1 (en la forant 1).  bit 3 (OUT 2) : idem pour OUT2.  bit 4 (LOOP) : Si 1, simule un LOOP-back, permet de tester l'UART en dtectant si la dfaillance est matrielle (rupture,pb de ligne) ou logicielle (pb de conguration).  bit 5 (AFE : AutoFlow control Enable) : si 1, mode diagnostic : la donne mise est immdiatement reue. Cela permet de vrier le bon fonctionnement du transfert de donne (bus interne).  bits 6-7 : tous 0.

6.3.8 LSR tat de la transmission


LSR (Line Status Register) : registre d'tat de la ligne de communication.
L'accs se fait l'adresse relative +5 en lecture seule. Ce registre rend compte de l'tat de la transmission. Il permet de connatre l'tat des buers de rception (bit 0 4) et de transmission (5 et 6) et de dtecter une ventuelle erreur de transmission. Un lecture du LSR remet 0 les bits 1 4.  bit 0 (DR : Data Ready) : 1 si donne entirement reue et transfre dans le RBR (ou FIFO RBR). Remis 0 par opration de lecture du RBR (ou FIFO RBR).  bit 1 (OE : Overrun Error) : 1 si sur-vitesse, un caractre nouveau vient d'arriver alors que le prcdent n'a pas encore t lu ou bien remplissage de FIFO au del du seuil prconis.  bit 2 (PE : Parity Error) : 1 si une erreur de parit est dtecte. Avec les FIFO, l'erreur s'applique au dernier caractre sortant (rst out).  bit 3 (FE : Framing Error) :1 si une erreur de format (nombre de bit de stop incorrect) est dtecte. Avec les FIFO, l'erreur s'applique au dernier caractre sortant (rst out). Aprs une erreur, l'UART prend 2 bits pour " resynchroniser ".  bit 4 (BI : Break Indicator) : 1 si une erreur de break est dtecte (idle time trop long, vitesses de transmission direntes entre ordinateurs). Avec les FIFO, l'erreur s'applique au dernier caractre sortant (rst out). Aprs une erreur, l'UART attend 2 instants d'horloge au niveau sur SIN pour autoriser le prochain caractre traiter.  bit 5 (THRE : Transmit Holding Register Empty) :1 si THR est vide, prt attendre un prochaine donne (mis 1 lorsque le transfert de THR vers TSR est eectu). Il est remis zro 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 zro par le chargement de THR. Avec les FIFO, 1 lorsque FIFO et TSR vides.  bit 7 (RFE : RBR FIFO Error) : 1 si une erreur (PE, FE, BI) est survenue dans le FIFO RBR.

6.3.9 MSR tat du modem


MSR (Modem Status Register) : registre d'tat du modem.
L'accs se fait l'adresse relative +6 en lecture seule. Ce registre donne l'tat des lignes de contrle du modem. En mode Diagnostic (MCR4=LOOP=1).  bit 0 (DCTS : Delta Clear To Send) : 1 si CTS a chang d'tat depuis la dernire lecture.  bit 1 (DDSR : Delta Data Set Ready) : 1 si DSR a chang d'tat depuis la dernire lecture.  bit 2 (TERI : Trailing Edge Indicator Ring) : 1 si RI est passe de l'tat haut bas depuis la dernire lecture.  bit 3 (DDCD : Delta Data Carrier Detect) : 1 si DCD a chang d'tat depuis la dernire lecture. 91

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

   

bit bit bit bit

4 5 6 7

(CTS : Clear To Send) :1 si CTS=0. En mode Diagnostic gal RTS. (DTR : Data Terminal Ready) : 1 si DTR=0. En Diagnostic gal DTR. (RI : Ring Indicator) : 1 si RI=0. En mode Diagnostic gal OUT1. : (DCD : Data Carrier Detect) 1 si DCD=0. En Diagnostic gal OUT2.

6.3.10 SCR rglages pour une horloge externe


SCR (SCratch Register) : registre de rglage pour l'utilisation d'une horloge externe et pour le dbuggage logiciel.
L'accs se fait l'adresse relative +7. Ce registre n'aecte pas les autres oprations de l'UART. Il permet de spcier une vitesse particulire de transmission via une horloge externe (connecte sur Xin) plutt que d'utiliser la vitesse standard (1.832 Mhz). L'opration dpend de DLAB :  Si DLAB = 1 : les bits P0 P5 reprsentent la valeur du diviseur (jusqu' 31.5). Exemple : Si Frquence 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, slection des interruptions logiques (ILS : Interrupt Logic Select), sinon slection de la sortie de l'UART (OS : uart Output Select).  Si DLAB = 0 : rien.

6.4 Programmer l'UART


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

6.4.1.1 Initialisation
La dmarche est la suivante :  Prparer l'accs au registre diviseur (DLAB =1 dans LCR)  Charger le diviseur (2 octets)  Remise 0 de DLAB dans LCR  Initialiser les paramtres de transmission  Eventuellement reset de l'UART par lecture des registres (LSR, THR, IIR, MSR)

6.4.1.2 Emission (d'un caractre)


La dmarche est la suivante :  Lire le registre d'tat LSR  Vrier si le registre d'mission est vide (Bit 5 de LSR)  Envoyer le caractre dans le registre THR

6.4.1.3 Rception (d'un caractre)


La dmarche est la suivante :  Lire le registre d'tat (LSR)  Vrier si un caractre est prsent dans le registre (RHR)  Lire le registre de rception RHR 92

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.4. Programmer l'UART

6.4.1.4 Utilisation courante


Pendant l'attente d'un caractre, on ne peut rien faire d'autre. Si des traitements doivent tre eectus, il faut prendre garde ne pas perdre les caractres qui continuent arriver. Se limiter des traitements courts Utiliser un protocole bloquant l'metteur pendant les traitements longs.

6.4.2 Par interruption


Il faut mettre 1 les bits dnissant les interruptions dsires dans IER. Dans le mode en interruption, c'est le registre IIR qui permet de distinguer l'origine de l'interruption.

6.4.2.1 Initialisation
         Prparer l'accs au registre diviseur (DLAB=1 dans LCR) Charger le diviseur ( 2 octets ) Remise a 0 de DLAB dans LCR Initialiser les paramtres de transmission Dtourner les interruptions (vecteur 0x0C pour COM1 et 0x0B pour COM2) Prciser les causes des interruptions souhaites Autoriser l'UART mettre des interruptions Rinitialiser 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, Rception, Emission,modem)  Acquitter l'interruption pour le 8259 (outp(0x20, 0x20))

6.4.2.3 Tampon (Buer) circulaire


Quelque soit le type d'UART utilis, la vitesse d'envoi ou de rception des donnes tant beaucoup plus lente que le temps d'excution du CPU, il faut utiliser un mcanisme permettant de ne pas monopoliser le CPU lors de la transmision. Pour cela, on a recours aux interruptions et l'utilisation d'une FIFO (ou buer) circulaire de taille approprie pour les 2 sens de la communication. Certains UART possdent mme une FIFO hardware. Si l'on programme le 8250 en mode interruptible, l'interruption doit tre gnre sur la n d'mission et sur la rception. Se pose alors le problme de savoir o mettre les caractre reus. Pour rsoudre ce problme, on utilise le concept de tampon (buer) circulaire : 93

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 6. UART

gure 6.9: Tampon Circulaire (FIFO) Le pointeur en criture pointe sur un emplacement du tampon qui est libre. On crit alors la donne sauvegarder cet emplacement et on incrmente le pointeur de faon ce qu'il pointe sur le prochain emplacement libre s'il y en a. Le pointeur en lecture pointe sur la prochaine donne lire. Aprs la lecture, on incrmente ce pointeur de faon ce qu'il pointe sur la prochaine donne non lue. On peut programmer un tampon circulaire en utilisant un tableau et deux index incrment. Si on arrive en n de tableau, on repart depuis le dbut (utiliser pour cela le modulo taille du tableau). Il faut grer les pointeurs de manire ce que le pointeur de lecture ne dpasse pas le pointeur d'criture.

94

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

6.5. Annexe : architecture interne d'un UART 16550

6.5 Annexe : architecture interne d'un UART 16550


5 0 Block Diagram

TL C 865216

Note Applicable pinout numbers are included within parenthesis gure 6.10: Structure

interne (registres) d'un UART 16550 95

Chapitre 7

I2C
Sommaire
7.1 7.2 7.3 7.4 7.5 7.6 7.7 Introduction . . . . . . . . . . . Le protocole I2C . . . . . . . . . La gestion des conits . . . . . . L'adressage des composants . . Mode de transfert en adressage Mode de transfert en adressage La programmation du bus I2C . . . . . . . . . . . . . . . . . . . . . . . . standard tendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 98 101 103 104 106 108

7.1 Introduction
7.1.1 Prsentation et domaine d'application
Le bus I2C (Inter Integrated Circuit), externe au PC, a t dvelopp au dbut des annes 80 par Philips semiconductors pour permettre de relier facilement un microprocesseur les dirents circuits d'un tlviseur moderne sans augmenter les cots. Depuis, des fabricants de plus en plus nombreux ont propos des circuits intgrs compatibles. D'extension en extension, la vitesse a augment, les distances entre les appareils connects se sont allonges. C'est donc devenu une solution relativement simple de ralisation d'un micro-rseau trilaire de type srie, synchrone, multimatre dtection de collision avec hot-plugging. Un systme utilisant ce bus peut reprsenter une alternative bas prix une liaison RS232 : ACCESS Bus. Le bus I2C (malgr son caractre srie) n'appartient pas aux bus de terrain. Il n'est pas destin couvrir de longues distances et ne possde pas l'immunit aux parasites ncessaire. Le bus I2C se charge des communications qui sont (d'ordinaire) assures par le microprocesseur (plus particulirement le bus parallle). Il permet ainsi une conomie de place, une dcharge du microprocesseur dans la gestion multi-matres des priphriques (qui ncessite donc un arbitrage). Ce bus est ainsi devenu un standard pour les liaisons lentes des priphriques grand public. Il est souvent quali de petit bus comparativement aux bus parallles. toutefois, il possde certaines possibilits inconnues des autres bus :  il ne ncessite que 2 ls ;  il dispose de ltres d'entre qui rendent inoensives les impulsions parasites que peuvent vhiculer les 2 ls (SDA et SCL) ; 96

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

7.1. Introduction

 les composants les plus lents peuvent allonger la priode d'horloge pour faire attendre le circuit matre. Beaucoup de microcontrolleurs n'acceptent pas ces cycles d'attente.  il possde un protocole qui permet a plusieurs matres de partager le bus physique et de communiquer entre eux grce aux systme d'arbitrage anti-collision. Le bus I2C est alors bien adapt aux systmes multi-processeurs.

7.1.2 Caractristiques gnrales


Le bus I2C permet de faire communiquer entre eux des composants lectroniques trs divers grce seulement trois ls :  2 signaux synchrones : un signal de donne (SDA : Serial DAta Line), un signal d'horloge (SCL : Serial Clock Line).  un signal de rfrence lectrique (Masse).

gure 7.1: Raccordement sur le bus I2C Du point de vue lectronique, les lignes bidirectionnelles SDA, SCL sont toutes les deux relies l'alimentation positive Vcc (qui dpend de la technologie des composants : TTL ou CMOS) des circuits par l'intermdiaire de rsistances de pull-up (RP ). Ceci permet de maintenir le bus au niveau haut lorsqu'il est libre. L'interface I2C des circuits est toujours collecteur (bipolaire) ou a drain (MOS) ouverts pour permettre au circuit connect de ramener le niveau de la ligne la masse. Le niveau rsultant est alors une fonction logique ET de toutes les sorties connectes sur les lignes. RP limite la charge capacitive et RS les pics de tension par induction. De nombreux fabricants ayant adopt ce systme, la varit des circuits disponibles disposant d'un port I2C est important : Ports d'E/S bidirectionnels, Convertisseurs A/N et N/A, Mmoires (RAM, EPROM, EEPROM, etc...), Circuits Audio (Egaliseur, Contrle de volume, ... ) et autre LED, LCD... Le nombre important de circuits intgrs comprenant l'interface I2C ore de multiples avantages aux concepteurs de systmes lectroniques. En eet, l'atout majeur de cette liaison est de pouvoir facilement connecter en parallle sur le bus de nouveaux lments ou d'changer un lment contre un autre sans restructurer le systme. En eet, chaque point du bus possde une adresse exclusive (en nombre limit selon la capacit d'adressage). Le nombre de composants qu'il est ainsi possible de relier est essentiellement limit par la charge capacitive des lignes SDA et SCL : 400 pF au total. Les donnes sont transmises en srie l00 Kbits/s (12.5 ko/s) en mode standard et jusqu' 400 Kbits/s (50 ko/s) en mode rapide, ce qui ouvre la porte de cette technologie toutes les applications o la vitesse n'est pas primordiale. 97

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 7. I2C

7.1.3 Nouvelle caractristiques


An de compenser quelques lacunes des premires spcications du bus I2C, quelques nouvelles amliorations ont t apportes :  Le mode rapide : le bus dsormais la capacit de transmettre des donnes jusqu' une vitesse de 3.4 Mbits/s (0.425 Mo/s).  Des entres Trigger de Schmitt : an de limiter la sensibilit au bruit.  La mise en haute impdance d'un circuit non aliment : ceci vite de bloquer le bus si un priphrique 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 simultane de plusieurs composants, on utilise un protocole qui permet de dnir les rgles de communication.

7.2 Le protocole I2C


7.2.1 Les 2 modes de fonctionnement
Le protocole I2C dnit la succession des tats logiques possibles sur SDA et SCL, et la faon dont doivent ragir les circuits en cas de conits. Il existe deux modes d'utilisation du bus :  le mode Matre-Esclave : 1 seul circuit dirige la communication : le matre. Dans ce cas, le matre (ou l'esclave) devient tour tour metteur ou rcepteur selon l'opration eectue (lecture ou criture).  le mode Multi-Matres : plusieurs circuits peuvent prendre la main sur le bus et dcider des oprations. Un seul matre est actif un moment donn. La distinction entre matre et esclave est importante et n'a rien voir avec le fait que le composant met ou reoit des donnes. Le matre est celui qui prend l'initiative du transfert, dcide du sens de ce transfert et rgle la communication en mettant les impulsions d'horloge sur la ligne SCL, les donnes sur SDA tant gnres par le matre ou par l'esclave (suivant le sens de transfert rclam par le matre). Un matre peut donc tre rcepteur ou metteur. Un composant qui prend part la communication aprs avoir t appel par le matre s'appelle esclave. Le protocole I2C gre la liaison et les conits ventuels grce la fonction logique ET entre les lignes et une procdure d'arbitrage du bus.

7.2.2 La validit des donnes


Le niveau haut correspond une valeur suprieure 3 Volts et le niveau bas infrieure 1,5 Volts, les niveaux intermdiaires tant indnis. Un seul bit est transfr par coup d'horloge. Pour tre prises en compte, les donnes (sur SDA) doivent tre stables aussi longtemps que SCL est l'tat haut. Le circuit qui met les donnes doit les crire sur SDA pendant SCL=0, celui qui les lit le fait pendant SCL=1. 98

version du mardi 29de novembre 2005 2 h 17 Le changement d'tat: QuelCM_InfoIndus: que soit le niveau (haut ou bas) la ligne de donnes SDA sa valeur ne pourra changer que lorsque la Le protocole I2C 7.2. Philips Semiconductors ligne d'horloge SCL sera l'tat BAS.

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

5.0 BIT TRANSFER


SDA

7.2.3 Les

Due to the variety of different technology devic bipolar) which can be connected to the I2C-bus logical 0 (LOW) and 1 (HIGH) are not fixed a gure 7.2: Validit des donnes associated level of VDD (see Section 15.0 for E Conditions de dpart start et d'arrt stop. Specifications). One clock pulse is generated fo 2 l'intrieur du protocole den dfinition de l'I C les situations qui rgissent SCL conditions de dbut / transferred.

STABLE: OF DATA dpart et dedu stop et non des tout bits de dpart et de celui-ci stop. soit au repos (SDA=1 Pour prendre le contrle bus, il faut d'abord que etvalidity SCL=1) 5.1 Data DATA VALID ALLOWED pendant un intervalle susant. Pour transmettre des donnes sur le bus, il faut donc surveiller deux The data on the SDA line must be stable during SU00361 the clock. The HIGH or LOW state of the data l conditions particulires : when theSCL=1. clock signal on the SCL line is LOW ( Figure Bit transfer the (front I2C-bus descendant) alors  La condition de dpart (note S) 5. : SDA passe on '0' que  La condition d'arrt (note P) : SDA passe '1' (front montant) alors que SCL=1. 5.2 START and STOP conditions

ces conditions sont uniques. Il est noter que ce sont des conditions de DATA LINE CHANGE

Within the procedure of the I2C-bus, unique situ are defined as START and STOP conditions (s
SDA SDA

A HIGH to LOW transition on the SDA line whil such unique case. This situation indicates a ST

SCL

SCL

A LOW to HIGH transition on the SDA line whil

Condition de start : Cette situation a lieu et uniquement lieu lorsque defines la S P a STOP condition. ligne de donnes SDA passe de l'tat haut l'tat bas tandis que la ligne START STOP START and STOP conditions are always gener d'horloge reste l'tat haut. CONDITION CONDITION The Condition de stop : Cette situation a lieu et uniquement lieu lorsque la bus is considered to be busy after the STA SU00362 bus is considered to be free again a certain tim gure 7.3: de dpart et d'arrt de transmission du I2C ligne de Conditions donnes SDA passe de l'tat bas l'tat haut tandis que labus ligne condition. This bus free situation is specified in Figure 6. START and STOP conditions Philips Semiconductors d'horloge reste l'tat haut.

Detection of START Lorsqu'un circuit, aprs avoir vri que le bus est libre, prend le contrle de celui-ci, iland enSTOP conditions by d tout cela il faut ajouter les complments suivants : the bus is easy if they incorporate the necessa devient le matre. C'est lui qui gnre le signal d'horloge. Les autres composants doivent continuer les conditions de start et de stop sont toujours cres par le matre, hardware. However, microcontrollers with no su de scruter le 2 bus en attendant la condition de Stop. le bus est dit occup aprs la condition de dpart, sample the SDA line at least twice per clock pe Remarque 7.1 (Re-Dpart). la n d'une trame trouve une condition de (P). Le bus le bus seraA considr comme libreon aprs un certain temps (bien the stop transition. (re)devient libre au bout d'un temps d'environ 4,7 s. Pour viter le risque de perdre la main entre dfini) aprs la condition de stop. chaque trame, un matre peut utiliser un bit particulier appel Re Dpart (SR : Repeated Start). Comme il n'est pas possible de lire et d'crire en mme temps, le bit SR vite 2 oprations qui nces2.7. Les formats de transmission. siteraient une squence de Start (S) + Stop (P) et lui permet ainsi d'acclrer ses communications puisqu'il n'a pas besoin de renvoyer l'adresse du composant chaque trame ! 2.7.1. Format des mots.

The I C-bus specification

handbook, full pagewidth

S donnes. SLAVE ADDRESS R/W A DATA A/A Sr SLAVE ADDRESS R/W A DATA A/A P

Examinons maintenant les formats des mots et des transferts des Chaque mot transmis sur la ligne de donne SDA doit avoir une (n bytes (n bytes longueur de 8 bits. Jusque permettra de + ack.) l rien de particulier et ceci + ack.)
read or write

Le BUS I2C.doc / FJ

read or write

* not shaded because

transfer direction of data and acknowledge bits depends on R/W bits.

Sr = repeated START condition

direction of transfer may change at this point.


MBC607

gure 7.4: Re dpart (bit SR)

Fig.13 Combined format.

s
99

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 7. I2C

7.2.4 La transmission de donnes d'un octet


Les conditions de Start et Stop sont imposes par le matre (quel que soit le sens du transfert). Un nombre indni d'octets peut tre transmis entre un Start et un Stop.

7.2.4.1 Accus de rception


Chaque octet est transmis sur 9 bits, le 9me bit servant d'accus de rception (ACKnowledge). C'est l'esclave rcepteur qui gnre le bit ACK aprs chaque octet reu du matre metteur ou bien c'est le matre rcepteur qui le gnre aprs chaque octet de l'esclave metteur. Aprs avoir impos la condition de dpart, le matre applique sur SDA le bit de poids fort D7 (c'est lui qui est transmis en premier). Il valide ensuite la donne en appliquant pendant un instant un niveau 1 sur la ligne SCL. Lorsque SCL revient 0, il recommence l'opration jusqu' ce que l'octet complet soit transmis. Il envoie alors un bit ACK 1 tout en scrutant l'tat rel de SDA. L'esclave doit alors imposer un niveau 0 pour signaler au matre que la transmission s'est eectue correctement. Les sorties de chacun tant collecteur ouvert, le matre voit le 0 et peut alors passer la suite.

gure 7.5: Validation de transmission : ACKnowledge avec SCL (Horloge), SDAM (SDA matre), SDAE (SDA esclave) SDAR(SDA rel rsultant).

7.2.4.2 Ecriture d'une donne


L'criture d'une donne par le matre ne pose pas de problme particulier. Tous les circuits connects sur le bus dtectent la condition Start (par interruption). Seul le circuit reconnaissant son adresse communique ensuite avec le matre.

gure 7.6: Ecriture simple (1 octet)

Remarque 7.2 (Pause). L'criture d'un octet dans certains composants (mmoires, microcontr100

leur,... ) ou peut prendre un certain temps. De mme, la lecture peut ncessiter un temps d'attente

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

7.3. La gestion des conits

(n de conversion pour CNA-CAN). Il est donc possible que le matre soit oblig d'attendre l'acquittement ACK avant de passer la suite : puisqu'il est matre de l'horloge, il fait donc une pause de la manire suivante :

gure 7.7: Pause

7.2.4.3 Lecture d'une donne


La lecture d'une donne par le matre se caractrise par l'utilisation spciale qui est faite du bit ACK. Aprs la lecture d'un octet, le matre positionne ACK 0 s'il veut lire la donne suivante (cas d'une mmoire par exemple) ou 1 le cas chant. Il envoie ensuite la condition d'arrt.

gure 7.8: Lecture simple (1 octet)

7.3 La gestion des conits


7.3.1 La synchronisation
Tous les matres produisent leurs impulsions d'horloge de manire autonome. La conguration de la ligne SCL en ET cbl permet des matres concurrents de synchroniser leurs impulsions d'horloge. Un matre qui met un niveau bas relche la ligne un moment donn pour la remettre au niveau haut.A partir de cet instant, il relit le niveau de la ligne ret attend qu'il soit eectivement pass 1. Ainsi, aussi longtemps qu'un autre circuit maintient la ligne au niveau bas, la ligne reste 101

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 7. I2C

eectivement au niveau bas et le matre est bloqu. Le rsultat est que le bus se synchronise sur la priode la plus basse, donc le circuit le plus lent (qui peut tre un matre lent ou bien un esclave qui a besoin de temps d'attente).

7.3.2 L'arbitrage
7.3.2.1 Contexte
La structure mme du bus I2C a t conue pour pouvoir y accueillir plusieurs matres. Se pose alors le problme commun tout les rseaux utilisant un canal de communication unique : le contrle du bus. En eet, chaque matre pouvant prendre possession du bus ds que celui-ci est libre, il existe la possibilit que deux matres dsirent prendre la main en mme temps. Si cela ne pose pas de problme sur le plan lectrique grce l'utilisation de collecteurs ouverts, il faut pouvoir dtecter cet tat pour viter la corruption des donnes transmises.

7.3.2.2 Principe
Comme nous l'avons vu prcdemment, pour prendre le contrle du bus, un matre potentiel doit d'abord vrier que celui-ci soit libre et qu'une condition d'arrt a bien t envoye depuis au moins 4, 7s. Mais il reste la possibilit que plusieurs matres prennent le contrle du bus simultanment. Le mcanisme est le mme que celui de la synchronisation des horloges. un matre qui met un tat haut et relit un tat bas reconnat qu'un autre matre utilise le bus et perd le contrle du bus donc cesse sa transmission. Chaque circuit vrie en permanence l'tat des lignes SDA et SCL y compris lorsqu'ils sont eux mme en train d'envoyer des donnes. On distingue alors plusieurs cas :  Les dirents matres envoient les mmes donnes au mme moment : les donnes ne sont pas corrompues, la transmission s'eectue normalement, comme si un seul matre avait parl. Ce cas est trs rare, voire impossible.  Un matre impose un 0 sur le bus : il relira forcment 0 et continuera transmettre. Il ne peut pas alors dtecter un ventuel conit.  Un matre cherche appliquer un 1 sur le bus : s'il ne relit pas un niveau 1, c'est qu'un autre matre a pris la main en mme temps. Le premier perd alors immdiatement le contrle du bus, pour ne pas perturber la transmission du second. Il continue nanmoins lire les donnes au cas o celles-ci lui auraient t destines.

7.3.2.3 Mise en situation


Soit le chronogramme suivant :

gure 7.9: Exemple de collision (ou conit) 102

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

7.4. L'adressage des composants

avec SCLR : Horloge rsultante, SDA 1 : SDA matre 1, SDA 2 : SDA matre 2, SDA R : SDA rel rsultant (lus par les deux matres).

7.3.2.4 Analyse
Le premier octet est transmis normalement car les deux matres imposent les mme donnes. (Cas 1). Le bit ACK est mis 0 par l'esclave. Lors du deuxime octet, le matre 2 cherche imposer un 1 (SDA2), mais relit un 0 (SDAR), il perd alors le contrle du bus et devient esclave (Cas 3). Il reprendra le contrle du bus lorsque celui-ci sera de nouveau libre. Le matre 1 ne voit pas le conit et continue transmettre normalement (Cas 2). En conclusion, l'esclave reu les donnes du matre 1 sans erreurs et le conit est pass inaperu. Remarque 7.3 (Arbitrage et collisions). A partir du mcanisme d'arbitrage, on peut dduire 3 consquences : 1. Les adresses les plus faibles sont prioritaires sur les plus leves. Dans la construction d'un systme I2C plusieurs esclaves, les esclaves les plus prioritaires se verront aecter les adresse les plus basses. 2. En cas d'adresse identiques, l'criture possde la priorit sur la lecture (car le bit R/W=0). 3. Les collision sont dites  non destructives  puisque la donne prioritaire arrive intacte au destinataire.

7.4 L'adressage des composants


7.4.1 Gnralits
le nombre de composants qu'il est possible de connecter sur un bus I2C tant largement suprieur deux, il est ncessaire de dnir pour chacun une adresse unique. Au cours d'une transmission, le matre commence toujours slectionner un esclave l'aide d'une adresse et par indiquer l'esclave le sens de transmission l'aide du bit R/W.

gure 7.10: Sens du transfert : lecture ou criture

7.4.2 Adressage standard


L'adresse d'un circuit est code sur 7 bits complte par un bit R/W qui permet au matre de signaler s'il veut lire ou crire une donne. Le bit d'acquittement ACK fonctionne comme pour une donne, ceci permet au matre de vrier si l'esclave est disponible ou que l'adresse n'est pas celle d'un composant prsent. Le 1er octet d'une trame de dialogue comprend ainsi une adresse d'esclave sur 7 bit (128 composants adressables) et un 8me bit R/W prcisant si le matre veut mettre ou recevoir les donnes. 103

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 7. I2C

gure 7.11: Adressage standard (7 bits)

7.4.3 Adresses rserves


Certaines adresses ne sont pas utilises pour l'adressage de composants, ce qui en restreint le nombre total. Attention : 2 cas possibles selon adressage 7 bits ou bien 10 bits. adresse 0000 0000 fonction Appel gnral description Aprs l'mission d'un appel gnral, les circuits ayant la capacit de traiter ce genre d'appel mettent un acquittement. Le deuxime octet permet de dnir le contenu de l'appel. Pour synchroniser les priphriques lents avec les rapides Tous les circuits I2C deviennent sourds. On peut transmettre ce que l'on veut sur le bus. Retour la normale ds dtection d'une condition d'arrt. pour assurer une compatibilit avec des autres protocoles Remet tout les registres des circuits connects dans leur tat initial (quivalent celui lors de la mise sous tension). Les circuits qui en sont capables rechargent leur adresse d'esclave. exemple : dbuggage rseau. Passage en mode High Speed (3.4 Mbits/s). utilises en adressage 10 bits.

0000 0001 0000 001x

Octet de Start Protocole Cbus

0000 010x 0000 0110

Autres protocoles Reset

0000 0111 0000 1xxx 1111 0xxx 1111 1xxx

Rserv pour usage futur High Speed Adressage tendu Reserv pour usage futur

tableau 7.1: Adresses rserves pour le bus I2C

7.5 Mode de transfert en adressage standard


7.5.1 Ecriture du matre
Le matre positionne le bit R/W 0 pour signier l'criture. Le premier ACK vient de l'esclave pour la bonne rception de l'adresse et les ACK suivant signient la bonne rception par l'esclave des donnes crire. Lorsque la dernire donne est crite, l'esclave envoie ACK puis le matre termine par P : 104

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

7.5. Mode de transfert en adressage standard

gure 7.12: Ecriture multiple

7.5.2 Lecture du matre


Le matre positionne le bit R/W 1 pour signier la lecture. Le premier ACK vient de l'esclave pour la bonne rception de l'adresse et les ACK suivants viennent du matre aprs chaque donne lue. Lorsque le matre a nir de lire, il envoie NAK puis P :

Philips Semiconductors

The I2C-bus specification


gure 7.13: Lecture multiple

7.5.3 Format combin


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

SLAVE ADDRESS R/W A DATA A/A Sr SLAVE ADDRESS R/W A DATA A/A P (n bytes + ack.) * read or write (n bytes + ack.) * direction of transfer may change at this point.
MBC607

read or write

* not shaded because

transfer direction of data and acknowledge bits depends on R/W bits.

Sr = repeated START condition

gure 7.14: format combin

7.5.4 Cas particuliers


7.5.4.1 Les mmoires

Fig.13 Combined format.

10 7-BIT

Cas particulier des mmoires : L'espace adressable d'un circuit de mmoire tant sensiblement plus grand que la plupart des autres types de circuits, l'adresse d'une information y est code sur ADDRESSING 105

The addressing procedure for the I2C-bus is such that the

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 7. I2C

deux octets ou plus. Le premier reprsente toujours l'adresse(physique) du circuit et les suivants l'adresse interne de la mmoire.

gure 7.15: Exemple de lecture d'une mmoire (24C02)

gure 7.16: Exemple d'criture d'une page dans une mmoire (24C02)

7.6 Mode de transfert en adressage tendu


7.6.1 Adressage tendu
Ce mode est entirement compatible avec le mode standard (il est donc possible de mlanger des composants standard avec des composants tendus). Le principe repose sur le fait qu'il faut envoyer 2 octets pour avoir une adresse sur 10 bits. Le premier comporte une combinaison de bits particulire (de la forme 1111 0xx). Ici xx reprsentent les 2 bits de poids fort de l'adresse. Les 8 bits de poids faibles constituent le 2me octet.

gure 7.17: Adressage tendu (10 bits) 106

same master occupies the bus all the time. The transfer 2C-bus The specification Combined format. A Imaster transmits data to a slave direction is changed after the second R/W bit. 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.
handbook, full pagewidth

such that they all anticipate the sending of a slave address.


CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

7.6. Mode de transfert en adressage tendu

7.6.2 Ecriture du matre SLAVE ADDRESS SLAVE ADDRESS


S 1st S 7 BITS (write)

handbook, full pagewidth 1 1 1 1 01 X1 X 1

1 00 X X

handbook, full pagewidth

DATA A DATA A/A R/W A SLAVE ADDRESS SLAVE A ADDRESS 2nd A1 BYTE R/W A2 DATA A 1st 7 BITS 2nd BYTE 1 1 1 1 0 X X 0

DATA A/A P
MBC613

11110XX 1 SLAVE ADDRESS (write) SLAVE ADDRESS S R/W A1 A2 DATA A 1st 7 BITS 2nd BYTE SLAVE ADDRESS Sr 1st 7 BITS

DATA A/A P
DATA A
MBC613

R/W A DATA A

(write)

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


gure 7.18: Ecriture en mode tendu

(read)

MBC615

7.6.3 Fig.26 Lecture du matre A master-transmitter addresses a slave-receiver with a 10-bit address.
handbook, full pagewidth 11110XX

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.
0 11110XX 1 SLAVE ADDRESS SLAVE ADDRESS A2 Sr R/W A3 DATA A 2nd BYTE 1st 7 BITS 1 1 1 1 0 X X 1
A2 Sr

S R/W A1 1st 7 BITS handbook, full pagewidth 1 1 1 1 0 X X 0


S SLAVE ADDRESS

Philips Semiconductors SLAVE ADDRESS

DATA A P
MBC614 DATA

2C-bus specification R/W (write) A1 The I1st 7 BITS 2nd BYTE


handbook, full pagewidth 1 1 1 1 0 X X

SLAVE ADDRESS
0

SLAVE ADDRESS R/W A3 DATA A 1st 7 BITS(read) gure 7.19: Lecture en mode tendu
DATA A/A

7.6.4

(write) SLAVE ADDRESS SLAVE ADDRESS A DATA A R/W A 1st 7 BITS 2nd BYTE Formats combins
S (write)

(read)

MBC614

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


0

handbook, full pagewidth 1 1 1 1 0 X X

11110XX 0 Fig.27 A master-receiver addresses a slave-transmitter with a 10-bit address. SLAVE ADDRESS SLAVE ADDRESS SLAVE ADDRESS SLAVE ADDRESS DATA A/A Sr DATA A/A P S R/W A A DATA A A A DATA A 1st 7 BITS 2nd BYTE1st 7 BITS 28 R/W 2nd BYTE

(write)

28 1 1 1 1 0 X X

(write)

MBC616

1 DATA A P

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

Sr SLAVE ADDRESS R/W A DATA A 1st 7 BITS

gure 7.20: Ecriture puis lecture en mode tendu

dbook, full pagewidth

SLAVE ADDRESS

Fig.28 Combined format. A master addresses a slave with a 10-bit address, 0 data to this slave and reads data from this slave. 7 - BIT then transmits DATA A DATA
R/W A A/A (write) 11110XX Sr 0 DATA A/A P
MBC617

2nd BYTE OF 10-BIT 1st 7 BITS OF 10-BIT R/W A SLAVE ADDRESS A DATA A SLAVE ADDRESS

handbook, full pagewidth 1 1 1 1 0 X X

0 (write) SLAVE ADDRESS SLAVE ADDRESS S A A DATA A R/W 1st 7 BITS 2ndEcriture BYTE gure 7.21: en mode (write)

standard puis tendu 107

DATA A/A

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

On dcide de connecter le bus I2C la liaison srie dun PC. Le but est de pouvoir utiliser le bus I2C afin dy connecter de nombreux priphriques. On doit donc crire un pilote ( driver ) pour CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17 configurer et grer le protocole I2C. En particulier, on demande dcrire les fonctions relatives Chapitre 7. I2C linitialisation du bus I2C (I2C_init), et la dtection des tats de dbut (START), de fin de communication (STOP) et dacquittement (ACK). On ne demande pas de raliser les fonctions dcriture et de lecture de ce bus I2C. La connexion se fait selon le principe suivant : R sont les 7.7 La du busSDA I2Cet SCL la masse (GRD) pour ladaptation rsistances deprogrammation rappel et on relie les lignes lectrique. Le sens des lignes est driver donnsi par sens des flches. Le schma est srie : comme suit : Exemple de fonctions pour on le connecte SDA et SCL la liaison

gure 7.22: Exemple de connection du bus I2C au port srie Il suffit alors de lire ltat du registre MCR (COM1 + 4) de lUART et de lire ou crire les valeurs des bits auxl'tat conditions dinitialisation du bus et de auxl'UART conditions delire START, STOP Il correspondant sut alors de lire du registre MCR (COM1 + 4) et de ou crire les et ACKnowledge. valeurs des bits correspondant aux conditions d'initialisation du bus et aux conditions S, P et ACK. <ansi_c.h> a) #include Complter les instructions manquantes pour raliser la connexion du bus I2C la liaison srie

#include <ansi_c.h> #define COM1 0x3F8 /*adresse de base du port srie COM1 */ void I2Cinit( void) ; void I2C_init( void); void Start (void) {outp( COM1 +;4 ) = 2 ;

#dene COM1 0x3F8 /*adresse base port srie COM1*/ #dene MCR /*adresse du registre MCR (utiliser COM1)*/

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

{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 ; */ }

/* SCL = 1; SDA = 1 */

void ACK (void) ; {int compt ; /* compteur pour boucle tempo 20 ( ajuster) */ /* dpend de la frquence processeur */ outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */ outp (MCR , 2 ) ;/* SCL = 1 ; SDA = 0 ; */ for (compt = 0 ; compt <= 20 ; compt ++) {outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */ } } 108

Chapitre 8

USB
Sommaire
8.1 8.2 8.3 8.4 8.5 8.6 Introduction . . . . . . . . . . . . . Transactions et Transferts . . . . . Protocole USB . . . . . . . . . . . . Types de transferts (terminaisons) Enumration et Descripteurs USB Sur votre PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 113 114 121 125 127

8.1 Introduction
La dmocratisation d'appareils numriques grand public ncessitant des taux de transfert soutenus (camscope, scanner, appareils photos numriques, etc. . .), a oblig les constructeurs dvelopper des interfaces plus rapides, plus universelles tout en pouvant y raccorder un maximum de ces priphriques htroclites. Les ports srie / parallle, avec leurs caractristiques dsutes, voient leur utilit dcrotre au prot de rcentes interfaces comme l'USB (Universal Serial Bus), le FireWire (domaine grand public) ou d'autres plus anciennes mais qui ne cessent d'tre amliore comme le SCSI (domaine professionnel). Nous allons tudier l'interface USB qui reprsente une nouvelle liaison srie synchrone.

8.1.1 USB 1.1 et 2.0


La premire version de l Universal Serial Bus, l interface USB 1.1, permet de connecter un micro-ordinateur jusqu 127 (adressage sur 7 bits) priphriques pour un dbit thorique maximal de 12 Mbits/s, (soit 1.5 Mo/s), le tout sur un bus srie comme son nom l indique. Principalement destin aux priphriques lents, l interface a t dveloppe 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 troisime vitesse de connexion entre le Host (le matre) et les priphriques USB 2.0 : il est maintenant possible de relier des disques durs externes, imprimantes, scanners et autres lecteurs des vitesses frlant les 480 Mbits/s (soit 60 Mo/s). Le gain en vitesse a t notamment possible grce la rduction du voltage des signaux transmis dans les cbles, ceux-ci passant de 3.3V 0.4V. Les priphriques rpondant la norme 2.0 ne peuvent pas bncier de la vitesse haute s ils sont raccords derrire un HUB USB 1.1. Il y a un gros  boum  des chipsets rcents qui intgrent tous la norme USB 2.0 (depuis milieu 2002-2003). 109

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

Parmi les priphriques pouvant tre raccords au micro-ordinateur, nous pouvons citer claviers, souris, joysticks, scanners, imprimantes, tlphones, assistants personnels, baladeurs mp3, lecteurs/graveurs de cd-rom, disques optiques et magntiques, webcams, modems, etc. . .. Autant dire que cette interface est voue remplacer court terme toutes les autres interfaces d entres/sorties de nos micro-ordinateurs (au moins celles du domaine grand public). Les principaux critres du dveloppement de ce bus ont t les suivants :  3 dbits (maximum thorique) 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 dbits rels sont en fait plus faibles. En eet, le bus doit faire passer, outre les donnes, les bits d'tats, de contrles et les bits d'erreurs. De plus, plusieurs priphriques peuvent se partager le bus et diminuer (dans certains modes o la bande passante n'est pas garantie) le dbit rel.  Facilit d'emploi et d'utilisation : hot plug and play (dtection du changement de la tension entre D+ et D-), hot swapping.  Une seule IRQ pour tous les priphriques connects au port (n aux pb de conits).  Energie (faible : 100 mA) distribue par le cble (moins de prises).  Bas-prix pour les dbits faibles (12 Mbit/s = 1.5Mo/s).  Transmission en temp rel (voix, audio, vido comprime).  Protocole souple pour dirents modes :  Transmission de paquets.  Mode isochrone.  Messages courts.  Sparation des commandes et des donnes.  Adaptation direntes conguration sur le terrain  Adaptation aise de nouveaux types de priphriques (adressage dynamique).  Support de l architecture CTI (Computer Telephony Integration)  Topologie en toile (via des Hubs) ou en bus (chans les uns aux autres).  Nombre maximum de priphriques lev (127). Rcemment, carte multi-ports gre par 2 ou + contrleurs.  Principalement half-duplex

8.1.2 Cbles
Le bus USB ncessite une connectivit propre compose de connecteurs de deux types, les connecteurs de type A disposs aux entres du contrleur matre et des HUB (upstream), et des connecteurs de type B sur les priphriques (downstream), ainsi un seul type de cble est ncessaire pour relier tous priphriques au micro-ordinateur :

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

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.1. Introduction

Ce cble se compose de 4 ls, une paire torsade pour le transfert des donnes, un l au potentiel de +5V qui permet d alimenter les priphriques USB si ncessaire et enn la masse (tlalimentation) :

gure 8.2: Composition (signaux) du cble USB On tablit la correspondance des signaux selon les types de connecteurs (A ou B) de la manire suivante : 1 (rouge) : 1. alimentation (Vbus), rouge 2. D- (Data), blanc 3. D+ (Data), vert 4. masse (GND), noir

gure 8.3: Correspondance des signaux pour les connecteurs A et B ce cble peut tre blind ou non, le mode basse vitesse de 1.5 Mbits/s ayant une tolrance suprieure aux perturbations lectromagntiques. Un blindage est fortement recommand pour une utilisation pleine vitesse 12 Mbits/s (longueur max de 5 mtres de cble entre 2 lments). Enn, un autre atout de ce bus est qu il peut transporter l alimentation des priphriques s y raccordant, dans la limite de 500 mA pour un appareil reli un port le permettant.

8.1.3 Topologie
L USB propose une topologie physique peer-to-peer, il tablit donc des connexions point point entre le contrleur matre (host) et chaque priphrique branch suppos esclave (device). Mme si thoriquement, la topologie du bus USB permet de connecter dans n importe quel ordre des priphriques, certaines rgles doivent tre respectes. Ainsi, une architecture USB se construit base de 3 lments : 1. Un contrleur matre USB(Host) + Root Hub. 2. Des priphriques USB (Devices) nomms de manire plus gnrale fonctions. 3. Des concentrateurs : Hubs qui sont des priphriques particuliers disposant de plusieurs ports de connexion au bus USB. Port unique ct upstream et multiple ct downstream. La structure de connexion des priphriques USB au contrleur matre se fait sous forme d toile tage (tiered star) , o le centre est le contrleur matre et les extrmits de celle-ci les priphriques : 111

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

gure 8.4: Structure toile srie Un lment supplmentaire s avre indispensable la connexion d un certain nombre de priphriques USB au contrleur principal (situ dans le South Bridge du chipset de la carte mre ou sur une carte additionnelle). En gnral, on ne dispose pas de plus de 5 connecteurs USB. Il devient alors ncessaire 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 nuds sont alors les HUB et les feuilles les priphriques. Remarque 8.1.  En tudiant la topologie logique de l'USB, on met en vidence la nature partage du bus. Chaque logiciel client (ct host) qui va manipuler une fonction (ct device) la verra comme si elle tait la seule sur le bus. Les concepteurs de logiciel n'ont plus se proccuper des problmes lis au partage du bus.  Pas d'interconnexion possible entre 2 PC (ou de manire quivalente pas de partage de pri112

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.2. Transactions et Transferts

phriques par 2 PC). Il ne peut y avoir qu'un host par bus (pas d'arrangement multi-matre). La nouvelle spcication USB 2.0 (2002) on-the-go introduit une possibilit d'arbitrage (ngociation) pour le choix du rle de host (reserv une connexion simple p2p entre 2 hosts)).  2 types de HUB USB : ceux possdant un circuit d alimentation individuel pour chaque port (hub classique) et d autres dpourvus de cette caractristique (hub interne au clavier).  3 contrleurs d'hte :  contrleur UHCI (Intel) : aspect logiciel > matriel.  contrleur OHCI (Compaq, Microsoft, NSC) : aspect matriel > logiciel.  contrleur EHCI (Standard USB 2.0) : 1 seul driver. s

8.2 Transactions et Transferts


La possibilit d une telle topologie entrane des consquences quant aux protocoles d changes de donnes entre le PC et les priphriques.

8.2.1 Modes de transmissions


1. mode asynchrone : comme un port srie classique 2. mode isochrone : permet une communication priodique et continue entre le contrleur matre et les priphriques ( chaque milliseconde prcisment, le contrleur matre transmet un paquet pour maintenir tous les priphriques synchroniss).

8.2.2 PIPE : Prliminaire la communication


Il s'agit de la rservation d'un canal entre logiciel du Host et le End-Point du priphrique

8.2.3 Phases de transactions (protocole)


1. Paquet Jeton (TOKEN) : Un jeton est mis par le host (obligatoire), puis un PID (Packet ID) identie le type de transaction. 2. Paquet Donnes (DATA) : donne 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 contrle : Message) : conguration, tats, initialisation des priphriques. 2. Bulk Data Transfers : (paquets en bloc, en rafale de donnes (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 rguliers et bande passante garantie, sans contrle d'erreur.

8.2.5 Squencement
Bus synchrone : 1 ms par trame (donc bus cadenc 1 KHz) 113

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

8.3 Protocole USB


Le fonctionnement de l'USB est prsent sous forme d'un systme spar en 3 couches (les 3 couches basses du modle standard OSI). Cette reprsentation permet chaque intervenant dans la ralisation d'un lment USB de bien dlimiter son travail en respectant les spcications attendues par les autres intervenants :

gure 8.6: Couches du protocole USB La communication se fait entre le Host (ordinateur) et les Device (priphriques) selon le principe de l'anneau jeton (Token Ring) : la bande passante est partage temporellement entre tous les priphriques connects et l'hte met un signal de dbut de squence (Frame) chaque milliseconde, intervalle de temps pendant lequel il va donner simultanment la parole chacun d'entre-eux (sensation de connexion privilgie). Le protocole de communication est quali de host scheduled token based protocol : le host initie toutes les transactions. Le premier paquet (le jeton) est produit par le host pour dcrire ce qui va suivre, si la transaction de donnes sera en lecture ou en criture, ce que sera l'adresse de l'appareil et la terminaison (mode de transfert) dsigne. Le jeton contient donc une grande partie de l'information sur la nature de la communication. Lors de la connection d'un nouveau priphrique, le host procde la phase d'numration. Le jeton contient l'adresse du priphrique (code sur 7 bits = 27 =128 priphriques-1 car adresse 114

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.3. Protocole USB

'0' est rserve, adresse par dfaut avant aectation) qui dsigne le priphrique concern. Si ce dernier reconnat son adresse dans le jeton, il envoie un paquet de donnes en rponse, sinon, il fait suivre aux autres priphriques qui lui sont chans. En dtail, un client envoie au systme USB une requte transforme en IRP (Input-output Request Packet) par le driver USB. Le host gre la liste des IRP (numration). Chacune se concrtise par la succession d'une ou de plusieurs transactions (s'il faut fragmenter les donnes) sur le bus. Chaque transaction se dcompose alors en la succession d'au plus 3 paquets dont les rles sont bien dnis (Token, Data, Handshake) dans les protocoles.

8.3.1 PIPE
Dnit au niveau de la couche fonction, un Pipe est un prliminaire la communication : rservation d'un canal entre logiciel du Host et la terminaison (End-Point) du priphrique. A chaque canal est associ :  la bande passante requise  les caractristiques du End-Point (direction, taille max donnes, etc. . .)  le type de transfert de donnes 2 type de PIPE : 1. STREAM : les ux de donnes brutes n'ont pas de format USB prdni. Prise en charge des transferts en Bloc, Isochrone et Interruption. 2. MESSAGE : les canaux ont un format USB dni. Prise en charge uniquement des transferts de commande.

8.3.2 Trame de communication

La communication entre priphriques et htes sur le bus physique se prsente sous la forme d'un ot de bits mis en srie. C'est le SIE (Serial Interface Engine) qui s'occupe de transformer le ot de bits arrivant en parallle dans les buers du contrleur hte, en un ux de donnes srie conforme la spcication USB. Ce ux est constitu d'un ensemble de bits interprtables dans une fentre de temps dtermine. Cette taille de fentre est xe une milliseconde et l'ensemble des bits contenus dans cette fentre constitue une trame (Frame). Une trame est divises en 3 parties : _______________________________________________________________________________________  un marqueur de dbut de trame (SOF : Start Of Frame) qui est un paquet spcial mis par l'hte toute les millisecondes.  un ensemble de transactions de dirents types entre hte et priphriques.  un intervalle de n de trame (EOF : End Of Frame) qui est une priode comprise entre la dernire transaction mise dans la trame et le jeton SOF de la trame suivante.
Trame N 1 (1 ms) EOF SOF Trame N (1 ms) Trame N + 1 (1 ms) EOF SOF Temps SOF Start of Frame : marqueur de dbut de trame EOF End of Frame : intervalle de fin de trame Figure 24 Gnration de trame sur le bus physique

Gro

gure 8.7: Frame USB

115

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

Un bit isol ne signie rien. On trouvera toujours un paquet. Dans le cas o il n'y a aucun travail a eectuer, on envoie SOF toutes les ms :

gure 8.8: Paquet SOF Un priphrique doit d'abord isoler une trame l'intrieur de laquelle on retrouve des ensembles de paquets (Token, Data, Handshake) :

gure 8.9: Paquets de la trame USB La composition de ces 3 paquets ralise une transaction :

gure 8.10: Transaction C'est toujours l'hte qui initie la transaction et c'est le priphrique qui a t slectionn par le host qui peut alors utiliser le bus. Il reoit la permission de parler au moment o il reoit le jeton 116

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.3. Protocole USB

initiateur (SOF). La manire de distribuer le jeton et l'ordre dans lequel les paquets vont circuler sur le bus sont dnis dans le protocole rgissant le fonctionnement du bus.

8.3.3 Format des paquets


Chaque paquet (Token, Data ou Handshake) est structur de la manire suivante :  un identicateur (PID)  une information spcique selon le paquet (ADResse + EndPoint, FrameNumber, Data, Vide)  un contrle 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 prcd d'un champ de synchronisation utilisant le codage NRZI (un 1 logique est un non changement d'tat au contraire du 0 logique) et le bit stung (on met un 0 aprs six 1 logique conscutifs pour forcer une transition NRZI et ainsi viter les pertes de donnes) :

gure 8.12: Codage NRZI)

8.3.4 Types de paquets


Le format d'un paquet et les dirents champs qui le composent varient d'un type de paquet un autre. Nous allons dcrire sommairement le rle et les dirents types de paquets possibles :

TOKEN : Les paquets token vont du hub racine (host) vers un priphrique et servent au contrle du systme. Ce paquet jeton indique le type de la transaction qui va suivre et a pour but de transporter l'adresse et le sens du transfert. Il contient un champ PID, un champ ADDResse, un champ terminaison (ENDP) et un champ de contrle d'erreur CRC 5. Il y a 3 sortes de
jetons possibles :  Jeton IN informe l'appareil que le host veut lire des informations.

117

La norme USB en quelques mots


CM_InfoIndus: 2 h 17 8 version bits du mardi 29 novembre 7 bits 2005 PID

v1.0 - 21/09/02
4 bits 3 bits

Chapitre 8. USB

PID

ADDR ACK

Les paquets

IN OUT informe l'appareil que le host veut envoyer des informations.  Jeton OUT  Jeton SETUP utilis pourau commencer transferts de commande (gnralement pour Token doivent se est conformer formatles suivant, SETUP la conguration d'un12 dispositif). Figure : Format du paquet Handshake

NACK STALL

ENDP

CRC

8 bits

7 bits

4 bits

3 bits

d. Les paquets SOF Figure 10 : Format Token ADDR du paquet ENDP PID

CRC

IN b. OUT Lesd'une paquets Data Le paquet SOF compos trame de 11 bits est envoy par l'hte toutes les 1ms SETUP 500ns sur un bus Full Speed vitesse ou bien toutes les 125s 0,0625s sur un bus

Speed. y High a 2 sortes de paquets de donnes pour la norme 1.1 ( Data0 et Data1) gure 8.13: Champ du paquet Token (Jeton) e mode High Speed dfinit 2 autres PIDs de donnes, DATA2 et MDATA. Les paquets SOF ont le format suivant : Figure 10 : Format du paquet Token o

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

La taille maximale de donnes " donnes utiles " pour les priphriques 8 bits 11 bits 5 bits b. Les paquets Low Speed vitesse est de 8 Data octets.

Frame Number CRC5 PID o Lade taille maximale de donnes donnes " pour les priphriques Il y a 2 sortes paquets de donnes pour la"norme 1.1 utiles ( Data0 et Data1) Full Speed est de 64 octets. Le mode High Speed dfinit 2 autres PIDs de donnes, DATA2 et MDATA.
SOF

La taille maximale de donnes " donnes utiles " pour les priphriques High Speed est de 1024 octets. o La taille maximale de donnes " donnes utiles " pour les priphriques gure 8.14: Champ du paquet SOF Low Speed doivent vitesse est de 8 octets. o Les donnes tre envoyes en multiple d'octets. Figure 13 : Format du paquet SOF DATA : paquet de donnes. Il y a 3 sortes de paquets de donnes : o La taille maximale despeed) donnes " donnes utiles " pour les priphriques DATA 0 : 8 octets (Low USB 1.1.  DATA 1 : est 64 octets (Full speed) USB 1.1. Full Speed de 64 octets. es paquets de Data ont le :  DATA2 et format MDATA suivant : 1024 octets speed) USB 2. Le standard Il USB assure une grande (High fiabilit des transferts par la dtection de est compos de 3 champs : PID-DATA-CRC 16. o La taille maximale de donnes " donnes utiles " pour les priphriques nombreuses erreurs au niveau hardware. : High Speed est de 1024 octets. 8 bits 16 bits 0-1023 bytes o

Erreur de paquets Les donnes doivent tre envoyes DATAen multiple d'octets. CRC16 PID o Paquet ID o Bit Stuff DATA0 o CRC DATA1 Data suivant Toggle : Les paquets de Data ont leoformat Time-out ( absence de rponse ) Babling 8 bits 16 bits 0-1023 bytesDATA gure 8.15: Champ du paquet LOA (Loss of Activity) Figure 11 : Format du paquet Data 118 DATA CRC16 PID

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.3. Protocole USB

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

 ACK : validation de bonne rception du paquet.  NAK : indique que l'appareil ne peut (temporairement) pas envoyer ou recevoir des donnes ou bien sert terminer une communication lorsque le host le dcide.  STALL : indique que l'appareil est bloqu.

gure 8.16: Champ du paquet Handshake

8.3.5 Champs des paquets


SYNC : Tous les paquets doivent commencer avec un champ SYNC. SYNChronisation de l'horloge
du rcepteur avec celle de l'metteur. 8 bits (0000 0001) en low et full speed, 32 en high speed. Les 2 derniers bits indiquent l'endroit o le champ PID commence. PID : Paquet Identicateur. Un PID consiste en 4 bits suivis des complments un de ces 4 bits an d'eectuer une vrication de ce PID. Le PID indique le type du paquet, son format et le type d'erreur de dtection applique au paquet. Si la vrication du PID a choue ou s'il n'est pas dcod comme la bonne valeur, le reste du paquet sera ignor par le rcepteur. ADDR : le champ adresse indique pour quelle appareil est destine le paquet. Suivant le PID, la fonction est l'metteur ou le rcepteur. Chaque fonction USB doit rpondre une adresse unique. Les priphriques rpondent l'adresse 0 lorsqu'ils viennent d'tre connects sur le bus. Ensuite, c'est l'hte qui assigne une adresse unique chacun. Sa longueur de 7 bits lui permet d'adresser 127 appareils (27=128) puisque l'adresse 0 est rserve lors de l'numration (interrogation de tous les priphriques par l'envoi d'un jeton par le host an de connatre l'ensemble des adresses pour pouvoir attribuer une nouvelle adresse au nouveau priphrique qui, en retour, s'identie). FRAME : le champ de trame permet d'identier le numro de la trame dans laquelle les paquets sont envoys. Ce numro, cod sur 11 bits, est incrment chaque nouvelle cration de trame, c'est dire toutes les millisecondes. Ce champ, n'existe qu'une fois par trame dans le jeton SOF. DATA : Le champ donnes peut aller de 0 1024 bits(128 octets). 8 octets en low speed, 1023 en full speed, 1024 en high speed. ENDP : un ajout de 4 bits d'ENDP permet un adressage des fonctions plus exible (dans le cas o plus d'une sous-voie est utilise). Les numros de point d'arrt sont des fonctions spciques. Ce champ est dni uniquement pour les PID : IN, SETUP et OUT. Les priphriques lents supportent au maximum 2 adresses de points d'arrt (terminaisons) par fonction. Les priphriques Full Speed acceptent jusqu' 16 points d'arrt (codage sur 4 bits). CRC : Vrication de la redondance des cycles. Ce champ est utilis pour vrier l'intgrit des donnes des paquets. Le PID n'est pas inclus dans la vrication. Tous les CRC sont gnrs avant l'insertion des bits de bourrage et sont dcods par les rcepteurs aprs avoir enlev ces bits de bourrage. Un CRC dfectueux indique que un ou plusieurs des champs protgs est 119

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

faux, le rcepteur 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 polynme gnrateur est : G(X ) = X 5 + X 2 + 1. Si tous les bits sont reus sans erreur, le CRC au niveau du rcepteur 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 donnes. Le polynme gnrateur est : G(X ) = X 16 + X 15 + X 2 + 1. Si tous les bits de donnes et de CRC sont reus sans erreur, le CRC est 1000000000001101.

groupe token (jeton)

valeur PID 0001 1001 0101 1101 0011 1011 0111 1111 0010 1010 1110 0110 0000

type de paquet OUT : informe le device que le host veut mettre IN : informe le device que le host veut recevoir SOF (Start Of Frame) : dbut de tableau SETUP : conguration, dbut des transferts commande DATA 0 : low speed, 8 octets DATA 1 : full speed, 64 octest DATA 2 : high speed,1024 max MDATA : high speed,1024 max ACK (ACKnowledge) : validation, accus rception NAK (No AcKnowledge) : le priphrique ne peut accepter (envoyer) les donnes sur Rx (Tx). STALL : bloqu NYET (No response YET) : pas encore de rponse PREamble : synchroniseur initial

Data (Donnes)

Handshake (Status) Special

tableau 8.1: Valeurs des PID (USB)

8.3.6 Dtection d'erreurs


Le bus USB tant bien plus volu que les bus prcdemment cits, la dtection d erreur ne se fait pas par un systme de contrle 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 contrleur peut rinitialiser jusqu 3 fois de manire hardware la liaison avec un autre lment avant d en avertir le logiciel client. Il y a plusieurs catgories 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 dtection d'erreur se traduit par une non rponse de la part du priphrique (Time Out). 120

La spcification du Bus Srie Universel dfinit 4 types rts de ou transfe de terminaisons, Transferts de commande Transferts d'interruption Transferts Isochrone Transferts en Bloc (BULK) Gestion de la bande champ passante.
PID FRAME Number
CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.4. Types de transferts (terminaisons)

type d'erreur

action requise paquet ignor jeton ignor champ frame ignor

vrication du PID errone, pb de bit stung CRC d'adresse incorrect, pb de bit stung CRC de frame incorrect, pb de bit stung

ADDR nsferts de commande

DATA CRC de donnes incorrect, pb de bit stung donnes ignores s Transferts ed commande sont rgulirement utiliss pour les oprations de command tat. Ils sont essentiels pour installer appareil tableau 8.2: Erreur un des paquets USB USB avec toutes les fonction i seront excuts en utilisant les Transferts de commande. Il surviennent ement gnral en quets directs et par rafales qui sont initis par l'hte et utilisent le meilleur vraison. La longueur du paquet du Transfert de commande pour appareil basse vites 8 octets, les appareils pleine vitesse autorise tailleune de paquet de 8, 16, 32 ou 64 oc s appareils haute vitesse doivent avoir une taille de paquet de 64 octets.

Transfert de commande peut avoir plus de 3 tapes.

8.4 Types de transferts (terminaisons)

tape d'installation L' se passe lorsqu'une demande est envoye. Elle est pose com de 3 paquets. Le jeton (token) d'installation envoy le premier est celui qui co Control Transfers et le 8.4.1 numro de la terminaison. Le paquet de donnes est envoy aprs et a to type PID de Data0 et inclut paquet un d'installation qui dtaille le type de la deman Nous dtaillerons le paquet d'installation plus tard. Le dernier paquet est u Il est constitu plusieurs tapes. Chaque tape (ou transaction) est compose de 3 paquets mains utilis pourdevalider la bonne rception ou pour indiquer Si unela erreur. fonction (TDH : Token, Data, Handshake). Il est utilis principalement pour les oprations d'initialisations reoitetcorrectement la donne d'installation ( CRC et PID etc...Ok) elle rpo de congurations. sinon elle ignore la donne et n'envoie pas un paquet de poigne de mains. Le ne peuvent pasd'installation mettre : un paquet STALL ou NAK en rponse paquet un d'installatio  l'tape

gure 8.17: Transfert de commande : transaction d'installation

tape de dones facultative consiste en un ou plusieurs L' transferts IN (Entre) ou O (sorties). La demande d'installation indique la quantit de donnes qui doit  l'tape de donnes (facultative) : dans cette tape. Si elle dpasse la taille maximale du paquet, les donnes s envoyes en plusieurs transferts, chacune ayant ngueur la lo maximale du paquet 121 l'exception du dernier paquet.

que le PID ne correspond pas avec les bits inverss du PID, il ignore paquet. Si le jeton est reu correctement, l'appareil peut soit rpond paquet de donnes contenant les donnes de commande envoyer, soit un pa CM_InfoIndus:version du mardi 29 novembre 2005 terminaison 2 h 17 "d'arrt" signalant que la a eu une erreur soit un pacquet signalant l'hte que la terminaison fonctionne, mais provisoirement Chapitre 8. USB donnes envoyer.

OUT (Sortie):Si l'hte envoie un (ou des) jeton(s) OUT pendant l'tape donnes pour transme ttre des donnes, la fonction validera la bonne rcep donnes en envoyant un paquet de longueur nul en rponse un jeton IN. Toutefois si une erreur intervenait, cela dboucherait sur un STALL ou s fonction tait encore occup traiter nnes, les do cela dboucherait sur un NAK gure 8.18: Transfert de commande : transaction dde donnes (facultatif) demandant l'hte retenter l'tape d'tat ultrieurement. (Sortie): Quand de l'hte a besoin d'envoyer l'appareil un paquet OUT

de commande, il emet un jeton OUTivi su par un paquet de donnes contenan  l'tape de d'tat : donnes commande comme "charge utile" (payload). Si une partie du j OUT ou du paquet de donnes est altr alors la fonction ignore le pac buffer de terminaison de la fonction tait vide a cadenc et qu'il les donnes da le buffer de terminaison, il produit un ACK avisant l'hte qu'il a bie donnes. Si le buffer de terminaison n'est pas vide cause du traitem paquet prcdent, alors la fonction retourne un NAK. Toutefois erminaison si la t comporte une erreur et que son bit "halt" ai t positionn, elle reto (Bloqu). tape d'tat L' rend compte des tats de l'ensemble de demandes et cette fois change selon la direction du transfert. Le rapport d'tat ours est ralis touj par la fonction.

IN (Entre): Si l'hte envoie un (ou des) jeton(s) IN pendant l'tape de recevoir des donnes, alors l'hte doit valider la bonne rception de ces est ralis par l'hte qui envoie un jetoniOUT parsuiv un apquet de donnes de Transferts de Commande: Le coeur du problme. longueur nul. La fonction peut maintenant rendre compte de son tat dans poigne de mains. Un ACK indique que la fonction a achev la commande et est maintenant prte accepter une autre commande. Si une r s'est erreu produite Maintenant, voyons comment tout cela s'accorde? Supposons par exemple que l'hte veu pendant l'excution de cette commande, alors la fonction mettra un STALL Toutefois si la fonction continue l'excution, elle retourne un NAK indiq demander un descripteur d'appareil pendant l'numration. Les paquets qui sont envoy ncessit de rpter l'tape d'tat ultrieurement.

les suivant s:

8.19: Transfert dedisant commande d'tat que le paquet suivant es L'hte enverra un jeton gure d'installation : transaction la fonction o OUT (Sortie):Si l'hte envoie un (ou des) jeton(s) OUT pendant d'installation. Le4 champ adresse fixera l'adresse de l'appareil 14/06/02 qui l'htel'tape a deman ER Bernard CHAP Page 2/8 Caractristiques : descripteur. Le numro la terminaison devrait la tre uniquant zro, une ind ligne donnes pourde transme ttre des donnes, fonction validera la dfectueuse bonne rcep  Message Stream. L'hte enverra alors paquet DATA0. -ci Celui aura 8 octets de en "charge utile" donnes enun envoyant un de longueur nul rponse un (payload) jeton IN.  Conguration, status, set up despaquet priphriques. correspondant la Demande de d'Appareil comme soulign auchapitre de la ou s  taille des paquets : 8,Descripteur 16, 32, 64 octets (Full Speed) et 8 octets (Low Speed). Toutefois si une erreur intervenait, cela dboucherait sur un9 STALL  Protocole overhead : 45 octets spcification USB. La fonction USB annoncera alors que do le paquet d'installation t fonction tait encore occup traiter nnes, les cela dboucherait sur un a NAK correctement et sans aucune erreur. Si le paquet tait reu altr, l'appareil ignor demandant l'hte de retenter l'tape d'tat ultrieurement. 122 simplement ce paquet. L'hte renverra alors le aprs paquet un court dlai.

Les Transferts en Bloc peuvent tre utiliss pour de grandes quantits de donnes sporadiq De tels exemples pourraient inclure un travail d'impression envoy rimante une imp ou une CM_InfoIndus: version du mardi 29 novembre 2005 2 h 17 image provenant d'un scanner. Les Transferts en Bloc se prmunissent de correction d'erreu sous la forme d'un champ CRC16 sur les donnes " charge utile " et sur les mcanismes de 8.4. Types de transferts (terminaisons) dtection et de retransmission d'erreurs qui assure smission la tran et la rception de donnes de manire infaillible.

Les Transferts en Bloc utiliseront une par bande passante de rserve attribue Le caractre Plug and Play est assur une phase de reconnaissance et de non conguration auto- sur le Bus que toutes les autres transactions aient t alloues. Si le Bus est occup avec de l'Isoc matique des priphriques connects au bus. En fait, le host dtecte tout priphrique nouvellement et/ ou de l'interruption, les donnes en bloc peuvent alors s'couler doucement sur le Bus. branch, l'aideen de transferts de contrle pour connatretre ses caractristiques et choisit en communicati consquence, lesl'interroge transferts bloc devraient seulement utiliss pour des consquence le driver adquat pour le contrler. De mme, toute dconnection est automatiquement insensibles au temps du fait de la non garantie du temps d'attente.

dtecte (en hard) par le hub concern qui le signale alors au host an que celuici en tienne compte.

Le s Transferts en Bloc. Utiliss pour de grandes quantit de donnes sporadiques. Dtection 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 donnes - Unidirectionnel. Seulemen t des modes pleine et haute vitesse.

Les Transferts en Bloc sont seulement supports par des appareils pleine et haute vitesse. des terminaisons pleine vitesse, la longueur maximale du paquet en Bloc est soit 8, 16, 32 8.4.2 Bulk Data octets. Pour des terminais ons Transfers haute vitesse, la longueur maximale du paquet peut aller jusqu' 512 octets. Si la charge utile des donnes est infrieure la taille maximale du paquet, pas besoin d'tre remplie avec des zros. Un transfert en Bloc est considr et comme compl quand il a transfr la quantit exacte de donnes demandes, ou un paquet infrieur la maximale de la terminaison, ou un paquet de longueur zro.

gure 8.20: Transfert en vrac


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

Caractristiques :  Pipe Stream.  CHAP Paquets en (ex : Scanners, imprimantes). QUIER Bernard 4 rafale de donnes Page 7/8  Taille des paquets : 8, 16, 32, 64 octets (uniquement Full Speed).  Utilise la bande passante quand elle est libre (dbit variable) !  Protocole overhead : 13 octets, data 1023 octets max.

14/06/02

123

"initi" la communication ont besoin de temps de retard limit.

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

8.4.3 Interrupts Transfers

gure 8.21: Transfert par interruption


Le diagramme ci -dessus montre le format d'une transaction d'interruption d'entre IN et d'interruption de ortie s OUT. Caractristiques :

priodiquement la terminaison d'interruption. Le taux d'interrogatio IN: L'hte interrogera Message court (petite quantit de donnes) mis de temps en temps (pas de relles interrupspcifi dans descripteur le plutt un polling de terminaison aque Ch interrogation tions, frquent). qui sera examin plus tard. obligera l'hte envoyer un jeton IN. Si le jeton IN est altr, la fonction ignore le paq  Taille des paquets : < 64 octets (Full Speed) et < 8 octets (Low Speed). continue la surveillance du Bus pour de nouveaux jetons.

 Pipe Stream.

Si une interruption a t mise en attente par l'appareil, la fonction paquet enverra Data un contenant des donnes ayant rapport l'interruption quand il recevra le jeton IN. Sur des rceptions au Isochronous niveau de l'hte, -ci celui retournera un ACK. Toutefois si les donnes sont altres 8.4.4 Transfers l'hte ne mentionnera aucun tat. Si, d'autre nepart, condition u d'interruption n'tait pas

 Transmission en Best Eort.  Protocole overhead : 13 octets.

ACQUIER Bernard CHAP 4

IN Page 5/8 OUT


Token Packet

DATAx
14/06/02

DATAx
Data Packet

gure 8.22: Transfert isochrone Caractristiques :  Pipe Stream.  Transmission isochrone (intervalles de temps rguliers).  Taille des paquets : < 1023 octets par frame : applications temps rel (exemple : Phonie, voix, vido, ISDN ...).  Bande passante garantie. 124

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.5. Enumration et Descripteurs USB

 Protocole overhead : 9 octets. Les changes isochrones sont les plus privilgies dans le sens o le host leur rserve une bande passante garantie. Ainsi, celui-ci peut refuser l'accs au bus un priphrique s'il juge que les ressources qu'il requiert ne sont pas disponibles. Type Transfert Mode (format data) Direction Taille max Data (par trame) ACK\ Reprise sur Erreur Bande rserve Control Message (prdni) bidirectionnelle 8,16,32,64 o (Full) 8 o (Low) oui 10% de la trame best eort Isochronous Stream (pas prdni) 1023 o (Full) non Interrupt Stream (pas prdni) 64 o (Full) 8 o (Low) oui Bulk Stream (pas prdni) Unidirectionnelle 8,16,32,64 o (Full) oui non good eort

Unidirectionnelle Unidirectionnelle

90% de la trame guaranteed

tableau 8.3: Caractristiques principales des types de transferts USB

8.5 Enumration et Descripteurs USB


8.5.1 Enumration
Dnition 8.1 (numration). Le terme  numration  dsigne un processus USB par lequel le
systme identie et congure le priphrique en lui donnant une adresse unique. C'est une gestion dynamique de la connexion et de la dconnexion des priphriques relis un bus USB. s Lors de la connexion (ou dconnexion) il y a une phase de dtection et une phase d'identication eectue par l'hte qu'on appelle numration. Lors de cette phase, le priphrique fournit l'hte une suite de descripteurs qui permettent son identication complte. Lors de cette phase d'numration, on assigne une adresse unique (Unique ID) au priphrique, on charge le driver correspondant et on positionne le composant dans la conguration qui lui t donn par les descripteurs. Lors de l'numration initiale ( la mise sous tension du PC) les HUBs et priphriques sont initialiss de proche en proche. Ainsi le HUB racine signale qu'il possde des priphriques non initialisse sur ses ports A et B. L'hte initialise alors une liaison occupe et la place dans sa liste de scrutation, puis passe la liaison suivante. Puis c'est au tour du deuxime HUB. L'hte va donc initialiser successivement les liaisons occupes et va les placer dans sa liste de scrutation. Puis on passera au HUB suivant s'il y en a un, etc. Jusqu' ce que tous les priphriques connects aient t initialiss.

8.5.2 Descripteurs
Dnition 8.2 (descripteur). On peut dnir les descripteurs comme tant des blocs d'informations pr-formats. Tous composants USB doit obligatoirement possder les descripteurs standards. Tous les transferts d'informations durant cette phase d'numration se font suivant le type commande (Control transfert). Il va de soi que tout composant USB doit pouvoir tre capable de supporter ce type de transfert. s Il existe sur le march de nombreux priphriques USB. Il a fallu, lors de la cration de la norme USB , trouver un dispositif pour reconnatre chaque composant USB. Cela tait indispensable puisque l'USB devait tre un dispositif plug & play. Lors du branchement du priphrique, le  host 
125

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 8. USB

doit reconnatre tous les priphriques qui lui sont branch. Le processus d'numration se fait grce aux descripteurs qui sont rassembls dans un chier texte qui est ensuite programm dans le systme USB. Lorsque l'on connecte ou dconnecte un priphrique, celui ci fournit l'hte toutes les informations ncessaires son identication, c'est dire ses descripteurs. Ils sont trs utiles pour l'hte puisqu'il peut, de ce fait, connatre les caractristiques compltes du priphrique comme par exemple la puissance utile, le type de priphrique, le dispositif de transfert des donnes, le module de gestion, . . . etc.

Gnralement, dans la plupart des priphriques, toutes ces informations sont stockes dans la ROM des composants, et lors de l'numration, le priphrique envoie simplement ce chier pour se faire connatre.

Les descripteurs standards sont regroups en plusieurs catgories :

1. 2. 3. 4.

Device descriptor (descripteur d'appareils) Conguration descriptor (descripteur de conguration) Interface descriptor (descripteur d'interface) Endpoint descriptor (descripteur de terminaison)

gure 8.23: Hierarchie des descripteurs USB

Par la suite, d'autres descripteurs ont vu le jour :  String descriptor (VID)  Device Qualier descriptor (idem Device pour Full & High speed)  Other Speed Conguration descriptor (Full & High speed)  Interface Power descriptor (gestion d'nergie, USB 2) 126

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

8.6. Sur votre PC. . .

8.6 Sur votre PC. . .

gure 8.24: Contrleur et Hub USB sur votre PC

127

Chapitre 9

IEEE-1394
Sommaire
9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 Introduction . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . Fonctionnement du bus FireWire . Un protocole, trois couches . . . . Une couche physique optimise . . Un arbitrage ecace et juste . . . Plug and Play et Hot Plugging ? . IEEE 1394 b, des amliorations . . . Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 129 131 133 135 135 136 136 137

9.1 Introduction
Le FireWire (IEEE 1394-1995) est une partie intgrante de la norme SCSI-3. Il utilise un bus srie et facilite la connexion de priphriques externes. On s'oriente de plus en plus vers une gestion bus rseaux

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 (cration 1995).  FireWire est l'implantation Mac (Apple Computer, Inc.) de l'IEEE 1394. P1394.x dsigne un cble 4 conducteurs (6 conducteurs composent le cble normalement, les 2 conducteurs de l alimentation sont supprims).  DigitalLink, ou i-Link (Sony Corporation) : produits Digital Handycam

9.1.2 Avantages de L'IEEE 1394


On peut citer :  Interface numrique : pas de CAN dgradante pour les donnes.  Taille rduite : cble n et peu coteux.  Utilisation trs facile, Hot Plug and Play.  Taux de transfert importants, bus supportant des priphriques mixtes ayant une vitesse de transmission de 100, 200 ou 400 Mbits/s. 128

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.2. Architecture

SLLA067

 Topologie exible : support du Daisy Chaining (marguerite).  Garantie de bande passante pour tous les priphriques raccords.

Applicability and Typical Application for IEEE 1394

9.1.3 Utilisation

The transmission of data without burdening the host unit creates a huge market for IEEE1394. Grce sesthe performances, l IEEE-1394 est destine particulirement require relier : an interface solution Not only does computer-based equipment in private households  Les ordinateurs. for the home and home office network, but also the evolving markets of digital broadcasts, interactive services, games, and a high speed network. The  Les produits manipulant de l home audio, shopping des imagesrequires et de la vido. introduction of digital set top boxes, which enable the reception of these services, enables the  Les imprimantes et les scanners. capability transmit digital data not only to consumer devices like digital TV, but also to PC and  Les to disques durs. storage media. Beside the consumer, and PC peripheral  Les camscopes (connecteurs 1394aPC, 2000 appels mini DV).markets, many industrial applications can be covered by IEEE1394.

gure 9.1:Interconnections Topologie physique de l'IEEE 1394 Figure 11. Possible Using 1394 as Interface D une topologie trs proche de celle de l USB, le FireWire se dmarque par sa bande passante bien suprieure. Il ne ncessite pas de HUBs FireWire (en plus de l utilisation d une transmission isochrone, le FireWire supporte le transport de deux ux vido temps rel avec une qualit broadcast en simultane) et possde galement des ports pour une utilisation interne.

9.2 Architecture
9.2.1 Chipset VIA Fire xx
VIA propose des chipsets intgrant le FireWire (sans passer par le bus PCI). Prvu pour concurrencer le FireWire, l USB2 propose des caractristiques attrayantes mais est destin un march un peu dirent. Dans sa nouvelle dclinaison, l IEEE 1394b propose des caractristiques et fonctionnalits encore plus avances que son concurrent et son prdcesseur :  Bande-passante amliore, passant ainsi de 400 Mbits/s 800 Mbits/s puis 1.6 Gbits/s (et mme 3.2 Gbits/s grce l utilisation de bre optique plastique multimodes). Dans cette conguration, les cbles reliant deux appareils pourront dpasser les 100 mtres ! (cbles UTP5 en 100 Mbits/s).  Nouveau protocole visant amliorer la disponibilit de la bande passante grce une implmentation BIOS du protocole d adressage.  Compatibilit avec les priphriques IEEE 1394-1995 par un mode bilingue.
20

Comparing Bus Solutions

129

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 9. IEEE-1394

 Nouvelles applications (automobile, acquisition audio - vido), intgration IEEE 488 (GPIB) et cartes d'E/S pour l'instrumentation industrielle.  gestion du bus comparable celle d'un rseau.

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 numrique de rfrence sur les quipements audiovido grand public). De nombreux produits IEEE 1394 sont disponibles sur le march (camras, cbles et connecteurs Molex, botiers TI, cartes d'interface Adaptec, imprimantes, scanners). La version appele 1394b bilingual (bilingue) garantit la compatibilit avec l ancienne norme IEEE 1394-1995.

9.2.3 Cbles
Deux paires de cbles (TPA et TPB) servent pour le transport des informations (donnes + horloge) et une paire (VPVG) est utilise pour la tlalimentation (1,5 A sous 8 40V).

gure 9.2: Exemple de connecteur Firewire 6 broches Cette alimentation permet d'alimenter les cartes rseau an que l'arrt d'un quipement ne provoque pas de coupure sur le rseau. Le support (moins rapide que la bre optique) ore des gammes de vitesse amplement susantes pour les applications du multimedia : 100 Mbit/s (12.5 Mo/s) en half-duplex, 200 Mbit/s (25 Mo/s) et 400 Mbit/s (50 Mo/s) en full-duplex (2, 4 : possibilit due aux cbles) et 800 Mbit/s (100 Mo/s). Pour IEEE 1394-b les vitesses sont de 1.6 (200 Mo/s) et 3.2 Gbits/s (400 Mo/s).

9.2.4 Norme
La norme dnit deux environnements distincts :  chssis (backplane) : il permet d'interconnecter les cartes d'un microordinateur, et vient en quelque sorte suppler les bus de fond de panier.  cble (cable). il est dni pour l'interconnexion d'quipements externes. Ses caractristiques principales sont :  63 quipements au plus sur un rseau, relis point point,  27 ports au plus sur chaque quipement,  topologie acyclique (pas d'anneau) daisy chain en arbre (voir gure 1),  distances maximales autorises : 4,5 m entre deux nuds voisins, 72 m entre deux nuds quelconques (c'est dire 16 sauts),  adressage sur 16 bits (norme IEEE 1212, systmes multibus),  spcication des registres mmoires de chaque nud et des commandes (transactions read, write et lock) qui permettent d'y accder. 130

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.3. Fonctionnement du bus FireWire

gure 9.3: Topologie logique de l'IEEE 1394

Contrairement au SCSI classique qui possde un cblage supervis (daisy chain, adresse en manuel ou xe, terminaison obligatoirement en bout de chane), avec IEEE 1394, on se retrouve en non - supervis (daisy chain hirarchis, rseau acyclique, selection des adresse automatiques, pas de terminaison, situation physique des priphriques quelconque au plug).

9.3 Fonctionnement du bus FireWire


Le rseau 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 rseau : le bus se (re)congure en lanant automatiquement des phases d'initialisation.

9.3.1 Caractristiques principales


 codage NRZ, connexion peer - to - peer (Host non obligatoire) favorisant l'utilisation en rseau,  adressage : se fait grce un identicateur de noeud (c'est--dire de priphrique) cod sur 16 bits. Cet identicateur est scind en deux champs : un champ de 10 bits permettant de dsigner le pont (systme permettant de relier plusieurs bus entre eux) et un champ de 6 bits spciant le noeud. Il est donc possible de relier 1023 ponts (soit 210 1), sur chacun desquels il peut y avoir 63 noeuds (soit 26 1), il est ainsi possible d'adresser 65535 priphriques !  architecture R/W en mmoire (dirent du classique I/O) : utilisation d'une technologie de transmission de donnes par paquets qui est organise comme si c'tait un espace mmoire interconnect avec plusieurs appareils,  la communication (un cycle nominal = 125 s, soit 8000 cycles/s) se dcompose en une suite de 3 composition de paquets (1 paquet start, des paquets isochrones et des paquets asynchrones) spars par des intervalles de temps (arbitration gap) : 131

Philips Semiconductors

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 9. IEEE-1394

1394 Bus Cycles

Cycle Start Packet

Isochronous Packets

Asynchronous Packets

Cycle Start Packet


Time

Arbitration Gaps

gure 9.4: Cycle nominal du bus IEEE 1394

 la trame standard est un cycle dont chaque paquet (isochrone ou asynchrone) est spar par un intervalle de temps (gap) dpendant de la nature du paquet :

gure 9.5: Dtails de la trame  mission / rception par paquets de donnes de 280 octets maximum (Header = 20 octets +Payload = 256 octets + CRC = 4 octets),

gure 9.6: Contenu des paquets asynchrone et isochrone     dtection automatique de la vitesse des changes. envoi des donnes avec une vitesse compatible au rcepteur. nuds : rception sur un port, mission sur plusieurs ports possibles, pendant la transmission chaque nud (priphrique) peut accder au bus communication half-duplex,  2 modes :  direntiel : pour reset, arbitrage, conguration, transmission paquets.  commun : pour dtection d'attachement/dtachement de priphrique, commande du signal de vitesse, et du signal de suspension / reprise de transmission sur le bus. 132

PS - XXX.XX.XX-11

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.4. Un protocole, trois couches

 squence mission : ARBitrage / Prexe-Data Payload-End / Liberation Bus,  squence rception : Data reue (sur couche physique) puis envoye couche liaison.

9.4 Un protocole, trois couches


La norme IEEE 1394 s'appuie sur le modle OSI et spcie trois couches : 1. couche physique (couche 1 OSI) 2. couche liaison (couche 2 OSI) 3. couche transaction (couche 3 OSI). Cette couche fait oce d'interface entre la couche application et la couche liaison pour le mode asynchrone.

,(((  SURWRFRO 6WDFN


&RQILJXUDWLRQ (UURU &RQWURO

5HDG :ULWH /RFN

6HULDO %XV 0DQDJHPHQW

7UDQVDFWLRQ /D\HU
3DFNHWV

,VRFKURQRXV &KDQQHOV

/LQN /D\HU
&\FOH &RQWURO 3DFNHW 7UDQVPLWWHU 6\PEROV 3DFNHW 5HFHLYHU

3K\VLFDO /D\HU
(QFRGH'HFRGH $UELWUDWLRQ 0HGLD ,QWHUIDFH

)LUPZDUH

(OHFWULFDO 6LJQDOV 0HFKDQLFDO ,QWHUIDFH

+DUGZDUH
gure 9.7: Architecture en couche
 =D\DQWH ,QF 0LFKDHO -RKDV 7HHQHU 7HFKQLFDO 6XPPDU\ 6OLGH 
3HUPLVVLRQ WR FRS\ JUD QWH G DV OR QJ D V WKLV QRWLILFDWLRQ LV UHWDLQHG VRPH WH[W DQG ILJXUH V ED VHG RQ   7HFKQLFDO 6XPPDU\ IURP $SSOH &RPSXWHU

La couche physique doit grer le signal de mise sous tension distance, la reconnaissance du signal de slection de l'appareil, le signal d'initialisation du bus et la rception / mission des donnes. La couche liaison formate les donnes en paquets pour la transmission via le cble. La couche liaison supporte 2 modes de communications (possible car 2 ls d'horloge) : 1. Mode asynchrone : Le mode de transfert asynchrone est bas sur une transmission de paquets intervalles de temps variables. Cela signie que l'hte envoie un paquet de donnes et attend de recevoir un accus de rception du priphrique. Si l'hte reoit un accus de rception, il envoie le paquet de donnes suivant, sinon le paquet est nouveau rexpdi au bout d'un temps d'attente. Ce temps de latence ne peut pas tre quanti car il dpend de taux d utilisation du bus par d autres transmissions pour d autres appareils communicants entre eux. 133

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 9. IEEE-1394

gure 9.8: Transaction asynchrone) 2. Mode isochrone : Le mode de transfert isochrone permet l'envoi de paquets de donnes de taille xe intervalle de temps rgulier (cadenc grce aux deux ls d'horloge). De cette faon aucun accus de rception n'est ncessaire, on a donc un dbit xe et donc une bande passante garantie. De plus, tant donn qu'aucun accus de rception n'est ncessaire, l'adressage des priphriques est simpli et la bande passante conomise permet de gagner en vitesse de transfert. Les communications isochrones sont prioritaires aux asynchrones (de sorte que la bande passante est assure). La communication isochrone entre deux appareils ou plus est assimilable un canal (PIPE). Une fois un canal tablit, l appareil demandeur est garanti d avoir l'espace-temps demand chaque cycle (donnes vido ou autres besoins temps rel).

gure 9.9: Transaction isochrone) La co-existence de ces modes est assure par une mthode dterministe d'accs au support. La racine du rseau est particularise au cours des phases d'initialisation et distribue le droit de parole au cours de la phase d'arbitrage qui prcde systmatiquement tout change de donnes en cadenant les changes isochrones (rle de cycle master ). La gestion de rseau est distribue dans les nuds qui se rpartissent en six prols, selon leurs performances. Les nuds peuvent tre : 1. repeater : simples couches physique actives, 2. transaction capable : transfert de donnes 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 grer les numros de canaux isochrones et leur taille, 6. bus manager capable : gestion de la tlalimentation, optimisation de la vitesse et de la topologie (ce nud n'est pas indispensable). 134

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.5. Une couche physique optimise

9.5 Une couche physique optimise


La couche physique doit grer le signal de mise sous tension distance, la reconnaissance du signal de selection de l appareil, le signal d initialisation du bus et la rception/mission des donnes. Les signaux sont mesurs en mode direntiel et les niveaux de tension sont de faibles amplitudes (quelques centaines de millivolts). Une particularit du bus IEEE 1394 rside dans l'utilisation de deux paires pour transporter les donnes. En eet, en plus d'un signal data classique (RxD en rception ou TxD en mission), les nuds mettent aussi un signal appel strobe (RxStrb ou TxStrb) qui change d'tat lorsque deux bits gaux conscutifs sont mis sur la paire data. Une transition a donc systmatiquement 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 leve des vitesses atteintes.

9.6 Un arbitrage ecace et juste


La phase d'arbitrage permet de grer l'accs au support. Chaque nud qui souhaite envoyer des donnes demande obligatoirement l'autorisation d'mettre la racine. La topologie cre donc une priorit naturelle entre les nuds : plus un nud est loin de la racine, moins il est prioritaire (arbitrage des cbles). Pour pallier cette ingalit le protocole introduit 2 notions : 1. fairness interval (mode asynchrone) : les nuds ne peuvent mettre qu'un seul paquet asynchrone pendant un intervalle d'quit. Celuici se termine quand tous les nuds asynchrones qui ont demand la parole l'ont prise une fois. Chaque nud a donc une possibilit d'accs pendant cet intervalle. 2. cycle master : (mode isochrone) : la racine dclenche le dbut de cycle isochrone l'aide d'un paquet asynchrone particulier (le cycle start) qui est le plus prioritaire puisque gnr par la racine.Chaque nud isochrone qui prend alors la parole a pris soin au pralable de se rserver une bande passante auprs du nud isochronous ressource manager. Le cycle isochrone prend n lorsque tous les nuds isochrones qui ont demand la parole l'ont prise une fois. Les moyens mis en oeuvre pour implmenter ces principes reposent sur les notions de signaux de signalisation et d'intervalles d'attente. A chaque type de donnes (asynchrone, acquittement, isochrone) est associe une classe d'arbitrage (fair, immediate, isochronous) qui est caractrise par un intervalle de temps d'attente (subaction gap, acknowledge gap, isochronous gap) pendant lequel le bus doit tre libre. Avant d'envoyer sa demande d'autorisation de prise de parole la racine, un nud doit dtecter un de ces intervalles. Le subaction gap est plus large que l'acknowledge gap ou l'isochronous gap. Ceci garantit que le transfert asynchrone ne vient jamais perturber le transfert isochrone et qu'une nouvelle requte ne prcde pas l'mission d'un acquittement attendu. La demande d'autorisation et sa rponse sont vhicules point point l'aide de signaux de signalisation. Pendant cette phase, les nuds tentent (au temps t) de forcer l'tat des lignes dans un tat logique prcis. Un nud 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 nuds observent l'tat rsultant des lignes et en dduisent le leur (par exemple : je peux parler ou je ne peux pas parler). 135

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 9. IEEE-1394

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

9.7 Plug and Play et Hot Plugging ?


Au dmarrage ou la suite d'un changement de conguration, le rseau se (re)congure de faon automatique en lanant trois phases successives : 1. la phase de bus initialize (initialisation et reset du bus), 2. la phase de tree identity (identication au sein d'une topologie en arbre), 3. la phase de self identity (identication personnelle du priphrique). Lors de la premire tape, le premier nud qui dtecte un changement gnre le signal de signalisation reset qui force tous les nuds du rseau oublier la topologie courante et identier leur nature (feuille ou branche). Lors de la seconde tape, chaque nud se numrote et se positionne dans la hirarchie arborescente (son unique port parent pointe vers la racine, ses autres ports sont des ports enfants) l'aide de signaux de signalisation. A l'issue de cette tape, le nud racine se reconnat car il est le seul (par construction) ne possder que des ports enfants. Au cours de la self identity, les nuds choisissent leur adresse rseau, diusent les dbits qu'ils supportent, proposent ventuellement leur candidature tel ou tel rle de manager. A l'issue de cette phase, l'isochronous ressource manager (s'il existe) a t identi et le cycle master (la racine) a t activ. La communication peut alors dbuter.

9.8 IEEE 1394 b, des amliorations . . .


 appel Firewire 2 ou Gigawire,  Vitesses : 1.6-3.2 Gbit/s, grandes distances : 50-70-100 mtres (UTP5) ou 800 m (Fibre Optique),  Low Power : possibilit faible puissance (1.5A = maximum) conomies d'nergie,  Arbitrage amlior :  suppression du subaction gap une fois un cycle dmarr transmission plus rapide,  arbitration Fly-By pour viter les collisions DATA/ACK suite la modication prcdente,  Priority arbitration : pipelining le premier demandeur est le matre. 136

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.9. Annexes

9.9 Annexes

gure 9.11: Split transaction

gure 9.12: Concatenation transaction

gure 9.13: Unied transaction

137

Chapitre 10

Acquisition de Donnes - Temps Rel


Sommaire
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.2 Structure gnrale d'un systme de mesure . . . . . . . . . . . . . . . . . 139 10.3 Gnralits sur les cartes E/S . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.4 Etude sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . 141 10.5 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.6 Tableau rcapitulatif des adresses de la carte Impulsion . . . . . . . . 149 10.7 Registres du Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

10.1 Introduction
Dans le domaine des sciences pour l'ingnieur, le systme de mesure le plus simple et le plus rpandu consiste utiliser un micro ordinateur interfac avec le systme sur lequel on travaille. Etablir un dialogue entre un micro ordinateur et un systme extrieur au PC est possible par l'intermdiaire de cartes d'interface. Ces cartes dites d'Entres/Sorties sont directement implantes l'intrieur du PC et connectes sur le bus PC via des Slots. Elles sont gnralement quipes de compteurs (timers), de circuits convertisseurs orant des entres et des sorties analogiques et des circuits base de portes logiques orant des entres et des sorties logiques l'utilisateur. Cet ensemble PC et carte d'interface est complt par un logiciel (gnralement appel driver) permettant la gestion de l'ensemble des fonctions de la carte Entres/Sorties par l'intermdiaire d'un programme. 138

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.2. Structure gnrale d'un systme de mesure

gure 10.1: Exemple de systme d'acquisition de donnes

10.2 Structure gnrale d'un systme de mesure


10.2.1 Les Capteurs
Les capteurs sont un des lments de n de chane d'acquisition de donnes. Ils sont sensibles aux phnomnes physiques ou chimiques. Leur rle consiste produire un signal lectrique, le plus souvent une tension analogique, mais aussi parfois une intensit, une frquence ou une srie de pulsations. Ces signaux sont lis au milieu dans lequel ils sont placs ou au phnomne qu'ils doivent dtecter. Leurs caractristiques importantes sont le domaine d'utilisation, la slectivit, la sensibilit, la drive et la reproductibilit, l'encombrement, la abilit, le cot, etc... Problmes d'utilisation : perturbation du phnomne mesur, niveau de signal, problmes dus aux parasites lors de la transmission de leurs signaux, non-linarit de la rponse...

10.2.2 Le conditionnement du signal


Les signaux issus du capteur ne sont pas toujours directement utilisables par le dispositif de CNA. Par exemple, les cartes de conversion les plus rpandues ont un calibre d'entre de 0 - 10 volts, avec une rsistance de quelques centaines de kW . Souvent, il faudra :  Amplier les signaux,  Adapter leur impdance,  Dcaler leur origine de manire exploiter au mieux l'amplitude accepte par l'organe de mesure lectrique,  Transformer des courants ou des frquences en tensions,  Filtrer pour liminer des interfrences, peut-tre aussi linariser de manire obtenir un signal proportionnel la grandeur tudie. Lorsque la distance entre le capteur et le systme convertisseur analogique-numrique est grande, on a intrt transmettre un signal ampli, relativement basse impdance, et ventuellement symtrique, pour diminuer l'importance relative des tensions parasites ajoutes le long des cbles de liaison. C'est un autre rle du conditionnement du signal. 139

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 10. Acquisition de Donnes - Temps Rel

Nous engloberons aussi sous ce terme les techniques ncessaires pour isoler lectriquement et amplier les tensions disponibles cette fois en sortie, de manire les rendre aptes commander les actionneurs des processus externes comme le dclenchement d'un chauage, le lancement d'un moteur ou l'ouverture d'une lectrovanne.

10.2.3 Le multiplexage
Le multiplexage des voies est une mthode permettant de scruter successivement plusieurs voies d'entre dans un systme d'acquisition. Bien entendu, cela allonge d'autant l'intervalle de temps qui s'coule entre deux mesures sur un mme canal. Le multiplexage peut consister simplement en une commutation sur l'une ou l'autre voie par l'intermdiaire de relais lectromagntiques pilots par le PC lui-mme, mais beaucoup de dispositifs de mesure comportent en entre un systme de multiplexage ralis entirement en semi-conducteurs, et aussi programmable. Lorsque l'on dsire une acquisition plus rapide, ou bien une mesure quasi-simultane sur plusieurs voies, on prfre consacrer un convertisseur analogique-numrique chaque voie.

10.2.4 La Conversion (CNA et CAN)


La conversion analogique-numrique transforme les valeurs de signaux lectriques continment variables (signaux analogiques) en nombres exploitables par l'ordinateur de manire numrique. Cette conversion est parfois eectue dans des appareils externes (l'exemple le plus classique tant le multimtre). Ces appareils externes envoient l'ordinateur le rsultat numrique obtenu par divers systmes de communication, les plus rpandus tant la liaison RS 232 ou le systme de bus IEEE 488. On peut aussi dans certains cas utiliser la liaison parallle prvue pour une imprimante. Les liaisons RS 232 et les connexions d'imprimante sont trs gnralement prvues d'origine dans les PC, mais par contre les liaisons IEEE doivent tre eectues travers d'une carte d'interface ajoute. D'autres systmes 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-mme, sous forme d'une carte d'extension qui comporte un ensemble d'entres-sorties numriques, de compteurs, etc . . . On vite cependant d'incorporer dans l'ordinateur des cartes de mesure lorsqu'on cherche une trs grande immunit vis--vis du bruit de fond, car le PC est un puissant gnrateur de parasites . . .

10.2.5 Le Logiciel d'Acquisition et de Traitement


Le logiciel d'acquisition gre le multiplexage ventuel, le protocole de communication avec l'appareil de mesure, les changements de calibre s'il y a lieu, ou les diverses tapes de la conversion si l'on a recours une carte incorpore. Les donnes rcupres sous forme de chane de caractres ou d'octets sont ensuite mises en forme et transformes en valeurs numriques, ventuellement traites de manire lmentaire. Le logiciel peut contrler un dispositif exprimental, au moyen de sorties numriques ou mme analogiques.

10.2.6 Les Timer


mthodes existent :  introduire des boucles d'attente par programmation,  utiliser l'horloge interne du PC. 140

Objectif : Lorsque l'on doit eectuer des mesures selon des intervalles de temps dnis, plusieurs

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.3. Gnralits sur les cartes E/S

Ces 2 mthodes prsentent des inconvnients puisqu'elles ne permettent pas de mesures prcises, de plus elles mobilisent l'utilisation du processeur. C'est pourquoi les cartes d'acquisition sont munies d'une horloge indpendante et de compteurs/dcompteurs programmables appels communment timer. Les timers possdent en gnral 4 registres : 1. le registre d'entre (prcompte) : chargement de la donne en 2 fois (LSB+MSB) uniquement en criture. 2. le registre de dcomptage : chargement partir du registre d'entre, dcomptage chaque front descendant de l'horloge du quartz et autorisation du dcompte par la gchette gate. La dure de dcomptage maximale avec un compteur 16 bits et un quartz de 4 MHz (Frquence 16 de travail) vaut : dure= 42106 16.4ms. Avec 2 timers en cascade dure de dcompte plus importante. 3. le registre de contrle (gnralement 8 bits) : dnit le mode de fonctionnement. 4. le registre d'tat du timer (gnralement 8 bits) : indication sur l'tat du dcompteur opration de lecture.

10.3 Gnralits sur les cartes E/S


Une carte E/S est considre comme un priphrique externe. Une carte E/S permet un dialogue entre le PC et l'extrieur. En particulier, elle :  ralise l'acquisition de signaux analogiques,  labore des signaux analogiques partir du PC,  assure des changes bidirectionnels de signaux logiques avec l'extrieur,  dispose d'une base de temps (compteur) qui lui est propre, Une carte E/S est constitue de :  Convertisseur Analogique - Numrique (CAN) : extrieur PC,  Convertisseur Numrique - Analogique (CNA) : PC extrieur,  Circuits d'Entre-Sortie logiques,  Circuits qui grent la base de temps (timer). Les oprations de lecture et d'criture se font en accdant dans les mmoires des composants (registres). Chacun de ces registres doit possder sa propre adresse pour viter les conits d'adresses. La dtermination de ces adresses se fait partir de l'adresse de base (adresse de rfrence) de la carte E/S.

10.4 Etude sommaire d'une carte d'acquisition


10.4.1 Introduction
La carte d'interface est considre par le PC comme un priphrique supplmentaire. Cette carte est dote de composants lectroniques possdant des mmoires appeles dans ce cas registres dans lesquels on ira lire ou crire des donnes. Comme toute mmoire, on accde un registre en le slectionnant par le bus d'adresse et son contenu est modi (criture) ou lu par l'intermdiaire du bus de donnes. La carte propose occupe deux groupes d'adresses 16 bits slectionnables par l'utilisateur au moyen de cavaliers. Le constructeur permet de choisir au pralable deux adresses dites de base partir desquelles sont dnies l'ensemble des adresses des dirents registres de la carte. Ces adresses de base sont xes des valeurs non encore utilises par le PC. 141

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 10. Acquisition de Donnes - Temps Rel

10.4.2 Description
La carte tudi (Impulsion) possde 2 groupes d'adresses slectionnables 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 Numrique Analogique AD 7537


Il convertit une valeur (numrique) en une tension analogique (continue).

gure 10.3: Schma de principe d'un CNA Le circuit intgr de cette carte qui ralise cette fonction se nomme AD7537 et contient deux convertisseurs dans son botier (voir gure 10.4). Par consquent, l'utilisateur dispose de deux sorties analogiques totalement indpendantes. En tudiant le diagramme de fonctionnement de ce circuit, on remarque qu'il est prvu pour se connecter sur un bus de donnes 8 bits. Le registre interne d'un CNA est scind en deux parties (structure 8+4) : 8 bits de LSB et 4 bits de MSB, ce qui oblige charger une donne en deux fois dans deux registres d'entre temporaires (DAC A ou B LS et DAC 142

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.4. Etude sommaire d'une carte d'acquisition

A ou B MS) placs deux adresses direntes. En fait, la donne ne sera prsente dans le registre 12 bits (DAC A ou DAC B register) que si on agit sur la broche (19) U P D du convertisseur. Un signal logique 0 sur cette broche transfre simultanment les donnes des registres d'entre vers les registres des deux CNA.

gure 10.4: Le CNA MX7537 Toute conversion se fait en 2 tapes : 1. chargement dans 2 registres d'entre A ou B (2 adresses direntes). 2. lancement de la conversion (ce qui revient charger le registre du DAC) en agissant sur la broche 19 (U P D ) qu'il faut forcer l'tat bas. La formule gnrale pour le calcul de conversion de la tension analogique dlivre en sortie est donn par (N = nombre de bits du registre, Nb = valeur numrique convertir) :

Vsortie = Vref
L'erreur de quantication est donne par le LSB :

2N

Nb 1

Vmin = 10

1 = 2, 44mV 212 1

5 adresses sont susantes pour grer le CNA 7537 :  2 adresses pour les registres du DAC A.  2 adresses pour les registres du DAC B.  1 adresse pour activer U P D. Les 2 registres d'entre ne sont valids qu'en criture et U P D est activ par l'intermdiaire d'un dcodeur d'adresse. C'est donc l'adresse (et non la donne) et le mode d'adressage qui importent ! DA1L=ADR1+4 DA1H=ADR1+5 CONVDA=ADR1+7 D7 D6 D5 D4 D3 D2 D1 D0 W W R

8 LSb (DAC A LS Input)

D11 D10 D9 D8

4 MSb (DAC A MS Input) Lancement de la Conversion

tableau 10.1: registres du CNA (MX 7537)


143

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Chapitre 10. Acquisition de Donnes - Temps Rel

10.4.2.2 Le Convertisseur Analogique Numrique AD574


Il ralise l'opration inverse du CNA : l'acquisition d'un signal analogique. Il convertit une tension analogique en un mot (numrique) de N bits.

gure 10.5: Schma de principe d'un CAN Le circuit intgr ralisant cette fonction est l'AD574 et contient un seul convertisseur dans son botier. AD574A
+5V SUPPLY VLOGIC DATA MODE SELECT 12/8 CHIP SELECT CS BYTE ADDRESS/ SHORT CYCLE AO READ/CONVERT R/C CHIP ENABLE CE +12/+15V SUPPLY VCC +10V REFERENCE REF OUT ANALOG COMMON AC REFERENCE INPUT REF IN -12/-15V SUPPLY VEE BIPOLAR OFFSET BIP OFF 10V SPAN INPUT 10VIN 1 2 3 4 5 6 7 8 9 10 11 12 13 9.95k 5k 5k DAC N VEE 19.95k 10V REF CLOCK 3k COMP 12 IDAC IDAC = 4 x N x IREF IREF 8k SAR CONTROL 3 S T 12 A T E O U T P U T B U F F E R S
MSB

28 N I B B L E A N I B B L E B N I B B L E C
LSB

STATUS STS DB11 27 MSB 26 DB10 25 DB9 24 DB8 23 DB7 22 DB6 21 DB5 20 DB4 DIGITAL DATA OUTPUTS

19 DB3 18 DB2 17 DB1 DB0 16 LSB 15 DIGITAL COMMON DC

20V SPAN INPUT 14 20VIN

AD574A 12

AD574A Block Diagram and Pin Configuration

ABSOLUTE MAXIMUM RATINGS*


(Specifications apply to all grades, except where noted)

gure 10.6: Le CAN AD574


175C Power Dissipation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 mW

La conversion analogique fera trois tapes VCC to Digital Common . . . . . . .numrique . . . . . . . . . . . 0 V se to +16.5 V enChip Temperature . .: ...........................
V to Digital Common . . . . . . . . . . . . . . . . . . . 0 V to 16.5 V

EE 1. dclenchement de la. .conversion de lecture Lead Temperature (Soldering, d'un 10 sec). registre . . . . . . . . . . .(situ . +300C l'adresse VLOGIC to Digital Common . . . . . . . . . . . . . . par . . 0 V une to +7 Vopration Storage Temperature (Ceramic) . . . . . . . . . . 65C to +150C Analog Common to Digital Common . . . . . . . . . . . . . . . 1 V adconv ). (Plastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . 25C to +100C Control Inputs (CE, CS, AO 12/8, R/C) to 2. attente de la n de conversion ( 25 s ). L'indicateur de n de conversion est le bit busy du *Stresses above those listed under Absolute Maximum Ratings may cause Digital Common . . . . . . . . . . . . . . 0.5 V to VLOGIC + 0.5 V permanent damage to the device. This is a stress rating only and functional registre situ l'adresse Tant que la conversion en cours, busy reste l'tat logique haut. Analog Inputs (REF IN, BIP OFF, adh 10 VIN. ) to operation of the device at these or any other conditions above those indicated in the Analog Common . . . . . . . . . . . . . . . . . . . . . . . . .VEE to VCC operational sections of this specification is uniquement not implied. Exposure toen absolute 3. lecture du rsultat en 2 fois. On utilisera 2 registres (accessibles lecture) aux 20 VIN to Analog Common . . . . . . . . . . . . . . . . . . . . . . 24 V maximum rating conditions for extended periods may affect device reliability. adresses adh et adl . REF OUT . . . . . . . . . . . . . . . . . . Indefinite Short to Common

Momentary Short to VCC

144

ORDERING GUIDE

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.4. Etude sommaire d'une carte d'acquisition

mdiate et ncessite un temps de conversion d'environ 25s pour l'AD574. Pendant que la conversion est en cours, le botier le signale par le bit d'tat busy l'tat haut. L'attente de n de conversion peut tre ralise soit par une boucle d'attente de longueur suprieure ou gale au temps de conversion soit par une lecture dans le registre situ l'adresse adh . busy passe l'tat bas lorsque la conversion est termine et que le rsultat peut tre lu.

La conversion : la technique se fait par approximations successives, la conversion n'est pas im-

Le multiplexage : le convertisseur analogique numrique est en gnral le circuit le plus coteux. Par consquent, lorsque l'on souhaite plusieurs voies d'entres analogiques, on prfre adjoindre au CAN un multiplexeur analogique plutt que de multiplier ce circuit. Ce multiplexeur permet de choisir par programmation entre x voies d'entres celle qui sera connecte au CAN. Un tel circuit 8 voies est utilis sur la carte tudie. La voie est choisie par criture de son numro dans un registre 8 bits situ l'adresse mux. La polarit : ce circuit a aussi la possibilit de traiter les signaux bipolaires (valeurs ngatives). Un bit (nomm pol ) non utilis dans ce registre mux a t utilis pour commander le mode
de polarit du CAN, ce qui vite un registre supplmentaire. Le choix du mode de conversion V Vref (unipolaire : 0 Vref Volts ou bipolaire : de ref 2 + 2 ) se fait par une simple action d'un signal logique, ce qui consiste en une criture dans le registre situ l'adresse mux . Si pol = 0, alors le mode choisit est bipolaire sinon il est unipolaire.
ADL = ADR1+5 ADH = ADR1+4 ADCONV = ADR1+6 MUX = ADR2+1 D7 BUSY D6

D4 D3 D2 D1 D0 8 LSb (CAN) D11 D10 D9 D8 busy+4 MSb (CAN) Lancement de la Conversion NX2 NX1 NX0 POL pol = 1 : unipolaire (0/10V) pol = 0 : bipolaire (-5/+5V ou -10/+10V)

D5

R R R W

tableau 10.2: registres du CAN (AD 574)


Protocole pour le lancement d'une acquisition : 1. choix de la polarit et du numro de la voie d'acquisition, 2. action sur adconv par une opration de lecture et test de busy , 3. lecture de la conversion en 2 fois (adh et adl ). Pour la carte utilise, Vref = 10, 24 Volts, ce qui assure un LSB exactement 25mV .

10.4.3 Etude du Timer 8254


Le timer 8254 est insr sur une carte d'acquisition avec un bus de donne de 8 bits. Le registre d'entre est un registre 16 bits ce qui oblige crire la donne en 2 fois (poids faible d'abord). Le registre de comptage est aussi un registre 16 bits. Les registres de contrle et d'tat sont des registres 8 bits. 145

Six programmable timer modes allow the 82C54 to be used as an event counter elapsed time indicator programmable one-shot and in many other applications

CM_InfoIndus:version du mardi 29 The novembre 2h 82C54 is2005 fabricated on17 Intels advanced CHMOS III technology which provides low power consumption
with performance equal to or greater than the equivalent HMOS product Chapitre 10. Acquisition de Donnes - Temps Rel and 28-pin plastic leaded chip carrier (PLCC) packages The 82C54 is available in 24-pin DIP

2312443 PLASTIC LEADED CHIP CARRIER

Figure 1 82C54 Block Diagram


2312442

gure 10.7: Architecture du timer 8254

Diagrams are for pin reference only Package sizes are not to scale

Figure 2 82C54 Pinout

10.4.3.1 Fonctionnement
Pour commencer, il faut charger le registre d'entre avec un nombre de son choix (0 65535). Le October 1994 Order Number 231244-006 front de l'horloge suivant provoque le transfert de ce nombre dans le registre de comptage o il sera dcrment chaque front descendant de l'horloge. Lorsque le compte est arriv 0, soit le compteur attend une nouvelle initialisation (mode dit monocoup ), soit il se rinitialise avec le nombre toujours prsent dans le registre d'entre et on recommence le dcomptage (mode cyclique ou priodique ). On peut aussi demander un signal de sortie symtrique (signaux carrs ) ou impulsionnel. Une tension d'entre logique activant  gate  autorise ou non le dcompte. L'ensemble des caractristiques de fonctionnement (monocoup, priodique, forme du signal de sortie et rle de  gate ) dnit le mode de fonctionnement.

gure 10.8: Etapes du fonctionnement

Remarque 10.1 (Latch). Il vaut mieux viter de lire le compteur l'instant o sa valeur change.

On opre donc en 2 temps. La valeur instantane est d'abord transfre dans un registre tampon et c'est celui-ci que l'on interroge alors que le (d)compteur continue de dcrmenter. s 146

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.4. Etude sommaire d'une carte d'acquisition

10.4.3.2 Architecture interne


Le 8254 possde une architecture  classique  mais avec 3 compteurs 16 bits indpendants nomme timer0, timer1 et timer2 :

Registre d'entre : chaque compteur possde son propre registre d'entre 16 bits spar 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'entre. Le bus (interne) de donnes tant de 8 bits, il faut donc crire dans ce registre d'entre en 2 fois : la 1re criture se fait dans le LSB et la 2me dans le MSB (cela est rendu possible par une logique interne). Registre de contrle : on devrait avoir trois registres de contrle correspondant chacun des 3 compteurs. En ralit, les trois registres sont multiplexs l'intrieur du botier et l'aiguillage est assur par les deux bits de poids fort de ce registre situ l'adresse timcw (timer control word). Avantage : on n'a besoin que d'une seule adresse pour les 3 timers. Les autres bits du mot de contrle servent dnir le mode de fonctionnement du compteur slectionn. Pour ce botier, il y a six modes disponibles :

Mode 0 : mode monocoup (hard). Interruption en n de comptage (0 reprsente le compte

terminal). Une action sur la gachette (gate 1) autorise le dcomptage, un zro provoque une pause. Mode 1 : monostable rarmable monocoup (ou pulsation de longueur variable hard). Un front montant sur la gachette provoque le dcompte. Une nouvelle action sur la gachette relance partir de la valeur du prcompte. Mode 2 : oscillateur diviseur par N (gnrateur de tops hard). Le dcompte est initi par un front montant sur la gachette. La sortie (initialement 1) passe 0 le temps d'une priode d'horloge lorsque le dcompte passe de 1 0. Ensuite on recommence jusqu'au prochain tops intervalles rguliers. Mode 3 : gnrateur de signaux carrs. Identique au mode 2 sauf que la sortie est 1 pendant le dcomptage de N (valeur du prcompte) N/2 puis 0 de N/2 0. Mode 4 : gnrateur d'impulsions synchronis par programme (soft). La gachette est initialement active ( 1). Le dcompte se dclenche ds chargement du prcompte. La sortie passe 0 pendant une priode d'horloge puis on recommence partir de la valeur du prcompte. Un changement logiciel de la valeur du prcompte relance un nouveau cycle. La mise 0 de la gachette permet de geler le dcomptage. Mode 5 : gnrateur d'impulsions synchronis par gate (hard). Identique au mode 4 sauf que c'est l'action sur la gachette qui permet de dclencher le dcomptage.

Registre d'tat : outre l'accs aux registres de contrle des trois compteurs (codes 00, 01 ou 10), il y a une 4me possibilit : le code 11 (bits D7-D6) qui est la commande de readback. Le 8254 possde trois registres 16 bits supplmentaires appels latchs, mmoires ou tampons. La commande readback permet de recevoir des informations du compteur (lecture des comptes ou lecture d'un mot d'tat). Dans cette commande, on peut soit latcher simultanment le contenu de plusieurs compteurs ce qui donne le temps de lire le contenu en temps dir, soit latcher l'tat des compteurs (le mot d'tat de 8 bits contient en particulier un ag retant l'tat de sortie du compteur). Il faut dans ce cas tester le bit output du registre d'tat. Les adresses de ces trois latchs sont celles dj utilises pour les registres d'entre mais cette fois avec un accs en lecture. La dtection de n de comptage est ralise en scrutant le bit D7 (output ) du Status Byte : la sortie est 1 pendant le dcompte et passe 0 en n de comptage durant une priode d'horloge (lire count0 tant que ([count0]&0x80) = 0x80 puis lire count0 tant que ([count0]&0x80) = 0).
147

82C54

CM_InfoIndus:version du mardi

Acquisition de If anChapitre initial count 10. is written while GATE e 0 it will MODE 1 HARDWARE RETRIGGERABLE still be loaded on the next CLK pulse When GATE ONE-SHOT After writing a Control Word and initial count the If a new count is written to the Counter during a onegoes high OUT will go high N CLK pulses later no shot pulse the current one-shot is not affected unCounter will be loaded on the next CLK pulse OUT CLK pulse is needed to load the Counter as this has OUT will be initially high OUT will go low on the CLK less the Counter is retriggered In that case the goes low N CLK Pulses after the initial count is writalready been done pulse following trigger to begin the one-shot pulse Counter is loaded with a the new count and the oneten This allows the Counter to be synchronized by and continues will remain low until Counter reaches zero shot pulse until the newthe count expires software also OUT will then go high and remain high until the CLK pulse after the next trigger
After writing the Control Word and initial count the Counter is armed A trigger results in loading the Counter and setting OUT low on the next CLK pulse thus starting the one-shot pulse An initial count of N will result in a one-shot pulse N CLK cycles in duration The one-shot is retriggerable hence OUT will remain low for N CLK pulses after any trigger The one-shot pulse can be repeated without rewriting the same count into the counter GATE has no effect on OUT If a new count is written to the Counter during a oneshot pulse the current one-shot is not affected unless the Counter is retriggered In that case the Counter is loaded with the new count and the oneshot pulse continues until the new count expires

thus starting the one-shot pulse An initial count of N counting If GATE goes low during an output pulse will result in a one-shot pulse N CLK cycles in duraOUT is set high immediately A trigger reloads the tion The one-shot is retriggerable hence OUT will Counter with the initial count on the next CLK pulse remain low for N CLK pulses after any trigger The OUT goes low N CLK pulses after the trigger Thus one-shot pulse can be repeated 29 novembre 2005 2 h 17 without rewriting the the GATE input can be used to synchronize the same count into the counter GATE has no effect on Counter OUT Donnes - Temps Rel

of OUT OUT w tial count has e der of the coun above is repea results in a sq cycles

GATE e 1 ena counting If GAT set high immed trigger reloads the next CLK p used to synchro

After writing a Counter will be allows the Cou also

2312448

NOTE The Following Conventions Apply To All Mode Timing Diagrams 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 a control 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 Since the 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

Writing a new c the current cou ceived after wri of the current Counter will be next CLK pulse new count Oth at the end of th

Mode 3 is imple

Figure 15 Mode 0

After writing the Control Word and initial count the counter will not be loaded until the CLK pulse after a trigger This CLK pulse does not decrement the count so for an initial count of N OUT does not strobe low until N a 1 CLK pulses after a trigger A trigger results in the Counter being loaded with the initial count on the next CLK pulse The counting sequence is retriggerable OUT will not 23124410 strobe low for N a 1 CLK pulses after any trigger GATE has NOTE noGATE effecttransition on OUT should not occur one clock prior to 2A

Even counts O loaded on one by two on succ expires OUT ch loaded withLow the Signal repeated Or indefin Status Goin
Modes

82C54

2312448

2312449

NOTE Figure 16 Mode 1 The Following Conventions Apply To All Mode Timing OUT will Diagrams be high for (N a 1) 2 counts and low for 1) Writing the first byte has no effect on counting terminal count 10 (N b 1) 2 counts 82C54 1 Counters are programmed for binary (not BCD) 2) Writing the second byte allows the new count to If a new count is written during counting the current Figure 17 Mode 2 counting and for Reading Writing least significant byte be loaded on the next CLK pulse counting sequence will not be affected If a trigger (LSB) only occurs after the new count is written but before the 2 The counter is always selected (CS always low) current count expires the Counter will be loaded This allows the sequence to be retriggered by 10 means a 3 CWwill stands for Control Word CW e and OUT be high for (N a 1) 2 counts low for 1) Writing the first byte has no effect on countingwith the new count on the next CLK pulse and software OUT strobes low N a 1 CLK pulses after control word of 10 hex is written to the counter (N b1) 2 counts will continue from there count the of N is written 2) Writing second byte allows the new count counting to 4 LSB stands for Least Significant Byte of count the new 5 Numbers below diagrams are count values be loaded on the next CLK pulse The lower number is the least significant byte The upper number is the most significant byte Since This allows the sequence to be retriggered by the counter is programmed to Read Write LSB only software OUT strobes low N a 1 CLK pulses after the most significant byte cannot be read N stands for an undefined count the new count of N is written Vertical lines show transitions between count values

gure 10.9: 8254 : modes 0,1 et

Odd counts O 0 Disable minus one (an pulse andcountin then 1 CLK pulses ing pires OUT goe with the initial pulses decreme expires OUT g reloaded th 2 1) with Disable process is repe countin

Low

2) Sets ou immed high 3

1) Disable countin 2) Sets ou immed high

4 5

Disable countin

Figure 15 Mode 0

Figure 21 Gat
2312449

Figure 16 Mode 1 10

MODE 0 1 2 3 4

23124411

NOTE A GATE transition should not occur one clock prior to terminal count

NOTE 0 is equivalent to 2 BCD counting

Figure 22 Minimu

Figure 18 Mode 3 MODE 4 SOFTWARE TRIGGERED STROBE OUT will be initially high When the initial count expires OUTNOTE will go low for one CLK pulse and then go high again Thetransition counting sequence is triggered A GATE should not occur one clock prior to by writing the initial count terminal count GATE e 1148 enables counting GATE e 0 disables Figureon 18 OUT Mode 3 counting GATE has no effect
23124411
23124412
23124413

Figure 19 Mode 4 gure 10.10: 8254 : modes 3,4 et 5 MODE 5 HARDWARE TRIGGERED STROBE (RETRIGGERABLE)

Figure 20 Mode 5

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

10.5. Annexes

10.5 Annexes
10.5.1 Les Fonctions du Langage C
La communication avec les registres de la carte s'eectue avec les fonctions inp et outp :  char inp(int AdressePort) lit un caractre (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.
.Vout 1. convertir la tension Vout en un nombre de bits N b = 4095 , 10 2. convertir ce rsultat (N b) rel en entier, 3. rcuprer les 8 bits de poids faible (reste de la division entire du nombre par 256) et les placer dans DA1L, 4. rcuprer les 4 bits de poids fort (le quotient de la division entire du nombre par 256 donne les 8 bits de poids fort) et les placer dans DA1H, 5. dclencher la conversion par une lecture (action sur U P D),

10.6 Tableau rcapitulatif des adresses de la carte Impulsion


FONCTION ADRESSES DA1L = ADR1+4 DA1H = ADR1+5 DA2L = ADR1+6 DA2H = ADR1+7 CONVDA = ADR1+7 ADH = ADR1+4 ADL = ADR1+5 ADCONV = ADR1+6 MUX = ADR2+1 COUNT0 = ADR1 COUNT1 = ADR1+1 COUNT0 = ADR1+2 TIMCW = ADR1+3 IOIN = ADR2 IOOUT = ADR2 LECT. ECRIT. W W W W R R R R W R R R R W W W W W DONNEES 8 LSb du CNA A 4 MSb du CNA A 8 LSb du CNA B 4 MSb du CNA B Action U P D Conversion 4 MSb du CAN + busy 8 LSb du CAN Conversion Multiplexage des voies + polarit compteur 0 compteur 1 compteur 2 registre de contrle entres logiques sorties logiques

CNA

CAN

TIMER

LOGIQUE

tableau 10.3: Rsum des registres de la carte  IMPULSION 


149

82C54
CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17
Programming the 82C54 OPERATIONAL DESCRIPTION Chapitre Acquisition de Counters Donnes - Temps gramming10. operations of other may be in-Rel
82C54

serted General

between them

Latch Comand is written is selected ol Word the Counters but his command

Counters are programmed by writing a Control Word and then an initial count The control word format is shown in Figure 7

COUNTER LATCH COMMAND The second method uses the Counter Latch Command Like a Control Word this command is written to the Control Word Register which is selected when A1 A0 e 11 Also like a Control Word the SC0 SC1 bits select one of the three Counters but two other bits D5 and D4 distinguish this command from a Control Word

gramming operat serted between t

All Control Words are written into the Control Word Another feature of theRegister 82C54 is when that reads and which is selected A1 A0 e 11 The Control Word itself specifies which Counter is being writes of the same may be interleaved for How each Counter operates is determined whenCounter it is programmed 10.7 Registres du Timer programmed Each Counter must be programmed example if the Counter is programmed for two byte before it can be used Unused counters need not be By contrast initial counts are written into the Counprogrammed ters not the Control Word Register The A1 A0 incounts the following sequence is valid puts are used to select the Counter to be written into The format of the initial count is determined by the Control Word used

After power-up the state of the 82C54 is undefined The Mode count value and output of all Counters are undefined

Another feature writes of the sam example if the C counts the follow 1 2 3 4

1 Read least significant byte 2 Write new least significant byte Control Word Format 3 e Read significant byte 0 RD e 1 most WR e 0 A1 A0 e 11 CS 4 Write new most significant byte D D D D D D D D
7 6 5 4 3 2 1 0

82C54 A1

A0 e 11 CS e 0 RD e 1 WR e 0 D6 SC0 D5 0 D4 0 D3 X D2 X D1 X D0 X

Read le Write ne Read m Write ne

D7 SC1

D1 X

D0 X

SC1 SC0 RW1 RW0 M2 M1 M0 BCD

hed

If a Counter is programmed to read write two-byte SC Select Counter M MODE counts A program SC1 SC0 the following precaution M2 M1 applies M0 0 0 Select Counter 0 control 0 between 0 0reading Mode 0 the first must not transfer 0 1 Select Counter 1 0 0 1 Mode 1 and second byte to another routine which also reads 1 0 Select Counter 2 X 1 0 Mode 2 from that Read-Back same Counter Otherwise an incorrect Command X 1 1 Mode 3 1 1 (See Read Operations) count will be read 1 0 0 Mode 4
RW Read Write RW1 RW0 BCD 1 0 1 Mode 5 0 0 Counter Latch Command (see Read READ-BACK COMMAND 0 Operations) 0 1 Read Write least significant byte only 1

count all but the first are ignored i e the count SC1 SC0 - specify counter to be latched which will be read is the count at the time the first read-back command was issued Counter SC1 SC0
0 0 0 0 command 1 1 used to latch The read-back may also be 1 0 2 status information of 1selected counter(s) by setting 1 Read-Back Command e STATUS bit D4 0 Status must be latched to be D5 D4 00 designates Counter Latch read status of- a counter is accessed by aCommand read from that counter X - dont care
Dont status care bits (X) should be 0 to in insure compatibility The counter format is shown Figure 11 Bits with future Intel products D5 through D0 contain the counters programmed Figure 9 Command Mode exactly asCounter writtenLatching in the last ModeFormat Control Word The OUTPUT bit D7 contains the current state of selected Counters output latch (OL) latches the count at the time the Counter Latch Command is the registres OUT pin du This allows the user to monitor the des 8254 received This count is held in the latch until it is read counters output viauntil software possibly eliminating by the CPU (or the Counter is reprogrammed) The count from is then some hardware a unlatched system automatically and the NOTE

If a Counter is p counts the follow must not transfe and second byte from that same THIS count will beACT read

Binary Counter 16-bits Binary Coded Decimal (BCD) Counter

A Write to READ-BACK wordCO re B Write to The third metho This command a register value programm C and NewNu co OUT pin ter(s) into CE

mand Command

The the(4 Decades) Read-Back command 1 0 third Read Write method most significant byte uses only 1 1 command Read Write least significant byte first This allows the user to check the count then most significant byte value programmed Mode and current state of the NOTE Dont care bits (X) should be 0 to insure compatibility with future Intel products OUT pin and Null Count flag of the selected counter(s) Figure 7 Control Word Format The command is written into the Control Word Reggure 10.11: Dtails ister and has the format shown in Figure 10 The command applies to the counters selected by set5 ting their corresponding bits D3 D2 D1 e 1

The 1 command Only the is c ister and has the have its null command appliec ting their corresp counters are u

2 If the coun (least significa A0 A1 e 11 C count goes to


D 7 D6 1 D5 D4 D3 D2 D1 D0 1 D5 COUNT

compatibility

nd Format
A0 A1 e 11 D 7 D6 1 D5 D4 D3 D2 D1 D0 D5 CS e 0 D4 RD e 1 D3 WR e 0 D2 D1 D0

L) latches the Command is until it is read rogrammed) cally and the lement (CE) he Counters in progress y be used to tched Counounter Latch med Mode of

1 COUNT STATUS CNT 2 CNT 1 CNT 0 0 0 e Latch count of selected counter(s) 0 e Latch status of selected counter(s) 1 e Select counter 2 1 e Select counter 1 1 e Select counter 0 Reserved for future expansion must be 0

OL 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 to D7 more D6 D5 Counter D4 D3 D2 latched D1 D0 latch than one Each Counters OL holds its count until it is read Counter Latch NULL Commands do not affect the programmed Mode of OUTPUT RW1 the Counter in any wayRW0 M2 M1 M0 BCD COUNT

If multiple stat are performed first are ignore the Figure status 10 of R t The read-back co read-back com

0 e Latch co 0 e Latch sta 1 e Select c 1 e Select c 1 e Select c Reserved for

Figur

If a Counter is latched and then some time later latched the count is read the second e Outagain D7 1 Pin isbefore 1 Counter Command is ignored The count read e Out Latch Pin is 0 0 will be the count at the time the first Counter Latch e Null count D6 1 Command was issued

0 e Count available for reading With either method the count must be read accordCounter Programmed Mode (See Figure 7) D5-D 0 to ing the programmed format specifically if the
Counter is programmed for two byte counts two bytes must be read The two bytes do not have to be 11 the Status read oneFigure right after otherByte read or write or pro-

ple counter out COUNT bit D5 e ter(s) single Both This count an lent to several c may be latch each counter latc is held until it S i COUNT and grammed) That tionally the sam when read but o they are read at If m commands are issued to the

Figure 10 Read-Back Command Format The read-back command may be used to latch multigure 10.12: Dtailsthe des ple counter output latches (OL) by setting COUNT bit D5 e 0 and selecting the desired counter(s) This single command is functionally equivalent to several counter latch commands one for each counter latched Each counters latched count is held until it is read (or the counter is reprogrammed) That counter is automatically unlatched when read but other counters remain latched until they are read If multiple count read-back commands are issued to the same counter without reading the

NULL COUNT bit D6 indicates when the last count registres du 8254 (suite)

e time later the second e count read ounter Latch

read accordfically if the counts two ot have to be write or pro-

written to the counter register (CR) has been loaded into the counting element (CE) The exact time this happens depends on the Mode of the counter and is described in the Mode Definitions but until the count is loaded into the counting element (CE) it cant be read from the counter If the count is latched or read before this time the count value will not reflect the new count just written The operation of Null Count is shown in Figure 12

ply here also status read-ba counter(s) with first are ignore

If both count a first read opera status regard next one or tw counter is prog return latched latched count

150

Chapitre 11

Conclusion
Les anciennes entres/sorties de nos micro-ordinateurs ont largement prot des dveloppements rapide de ces dernires annes. Les ports srie et parallle dj prsent sur les premiers PC commencent tre bout de soue et ne rpondent plus vraiment aux besoins des utilisateurs. Deux principaux bus se disputent dsormais le march, l USB et l IEEE-1394. Dans leur dernire dclinaison, ces deux interfaces proposent toutes les deux des caractristiques trs intressante (gestion de type rseau). Dans sa premire version, l USB tait jusqu alors limit des priphriques lents (claviers, imprimantes, souris, webcam). Avec sa version 2.0, il investit des domaines qui taient jusqu alors rservs l IEEE 1394 ou au SCSI (priphriques de stockage externe ou camscopes DV). Reste que l IEEE 1394 restera certainement l interface privilgie des priphriques trs gourmand, notamment en ce qui concerne l audio vido (camscopes, TV numriques, DVD). En eet, il ore d une part une bande passante plus importante dans sa dernire volution, et est plus apte grer plusieurs priphriques haut dbit.

151

Liste des gures


1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4.1 4.2 4.3 4.4 Architecture en couches . . . . . . . . . . . . . Architecture de Von Neumann . . . . . . . . . . Carte mre . . . . . . . . . . . . . . . . . . . . Schma fonctionnel d'un microprocesseur . . . . Unit de commande . . . . . . . . . . . . . . . Unit Arithmtique et Logique . . . . . . . . . Unit de traitement . . . . . . . . . . . . . . . . structure du 8086 . . . . . . . . . . . . . . . . . Hirarchie mmoire . . . . . . . . . . . . . . . . Exemple de disque dur . . . . . . . . . . . . . . Notion de cluster . . . . . . . . . . . . . . . . Hierarchie des mmoires . . . . . . . . . . . . . Exemples de codages . . . . . . . . . . . . . . . Eet capacitif . . . . . . . . . . . . . . . . . . . Qualit de transmission en fonction de la bande Modes de transmission : simplex et duplex . . . Liaisons srie et parallle . . . . . . . . . . . . . Transmission synchrone . . . . . . . . . . . . . Transmission asynchrone . . . . . . . . . . . . . Schma simpli d'un micro-ordinateur . . . . . Principe du DMA . . . . . . . . . . . . . . . . . Quelques rles d'un systme d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . passante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 5 6 6 7 7 8 12 13 14 15 16 16 17 18 18 19 19 20 22 23 30 44 44 47 50 50 51 51 57 61 62 62 63

Les ponts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scrutation . . . . . . . . . . . . . . . . . . . . Interruption . . . . . . . . . . . . . . . . . . . Table des vecteurs d'interruptions . . . . . . . Exemple de partage d'IRQ . . . . . . . . . . . Architecture d'un PIC . . . . . . . . . . . . . Liaison entre les 2 PIC et le microprocesseur . Liaisons matrielles d'un PIC . . . . . . . . . Sous programme d'interruption . . . . . . . . Connecteur DB25 pour SPP . Dialogue avec une imprimante Handshake : timing . . . . . . Protocole Centronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

152

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

4.5 4.6 4.7 4.8 4.9 4.10 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 7.1 7.2 7.3 7.4 7.5 7.6

Signaux et DB25 en mode tendu (EPP) . . . . Lecture et criture d'une donne en mode EPP Lecture et criture d'une adresse en mode EPP Signaux et DB25 en mode tendu (ECP) . . . . Commande et Data forward . . . . . . . . . . . Commande et Data reverse . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

64 64 65 65 66 66 68 69 69 70 70 70 71 71 72 73 73 74 74 75 75 76 76 77 78 78 79 80 81 81 82 83 84 85 86 86 87 89 94 95

Liaisons multipoint et directe point point (utilisant la tension) . . . . . Principe d'une communication srie RS232 . . . . . . . . . . . . . . . . . Ecacit d'une communication srie RS232 . . . . . . . . . . . . . . . . Niveau logique en communication srie RS232 . . . . . . . . . . . . . . . Parit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmission de C, 2 Stop, parit impaire, ASCII non tendu . . . . . Trame de communication RS232 : rsum . . . . . . . . . . . . . . . . . Relation entre niveau logique et tension . . . . . . . . . . . . . . . . . . Signaux sur les connecteurs DB25 et DB9 . . . . . . . . . . . . . . . . . Liaison duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connections pour liaisons simplex et duplex . . . . . . . . . . . . . . . . Connections DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . direntes phases d'une communication DTE vers DCE . . . . . . . . . DTE-DTE half-duplex sans contrle . . . . . . . . . . . . . . . . . . . . DTE-DTE full-duplex sans contrle . . . . . . . . . . . . . . . . . . . . . Cblage Null Modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DTE-DTE avec contrle de ux . . . . . . . . . . . . . . . . . . . . . . . DTE-DTE avec contrle de ux complet . . . . . . . . . . . . . . . . . . Exemple de trame en protocole RTS CTS . . . . . . . . . . . . . . . . . Direntes phases d'une communication entre 2 DTE (A et B) . . . . . Exemple de trame en protocole Xon - Xo . . . . . . . . . . . . . . . . . Algorithme Xon-Xo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proprits du port COM 1 sur PC . . . . . . . . . . . . . . . . . . . . . Algorithmes d'mission / rception d'un caractre ASCII avec utilisation UART : architecture interne . . . . . . . . . . . Transmission avec modem . . . . . . . . . . . . IRQ pour UART sur PC . . . . . . . . . . . . . Principe d'mission - rception . . . . . . . . . Mcanisme d'mission sans FIFO . . . . . . . . Exemple de squence temporelle en mission . . Mcanisme de rception sans FIFO . . . . . . . Rglages des FIFO sur PC . . . . . . . . . . . . Tampon Circulaire (FIFO) . . . . . . . . . . . . Structure interne (registres) d'un UART 16550 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . des buers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Raccordement sur le bus I2C . . . . . . . . . . . . . . Validit des donnes . . . . . . . . . . . . . . . . . . . Conditions de dpart et d'arrt de transmission du bus Re dpart (bit SR) . . . . . . . . . . . . . . . . . . . . Validation de transmission : ACKnowledge . . . . . . . Ecriture simple (1 octet) . . . . . . . . . . . . . . . . .

. . . . . . I2C . . . . . . . . .

. 97 . 99 . 99 . 99 . 100 . 100 153

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

Liste des gures

7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 7.15 7.16 7.17 7.18 7.19 7.20 7.21 7.22 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19 8.20 8.21 8.22 8.23 8.24 9.1 9.2 9.3 9.4 9.5 9.6 9.7 154

Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecture simple (1 octet) . . . . . . . . . . . . . . . . . . . Exemple de collision (ou conit) . . . . . . . . . . . . . . Sens du transfert : lecture ou criture . . . . . . . . . . . . Adressage standard (7 bits) . . . . . . . . . . . . . . . . . Ecriture multiple . . . . . . . . . . . . . . . . . . . . . . . Lecture multiple . . . . . . . . . . . . . . . . . . . . . . . format combin . . . . . . . . . . . . . . . . . . . . . . . . Exemple de lecture d'une mmoire (24C02) . . . . . . . . Exemple d'criture d'une page dans une mmoire (24C02) Adressage tendu (10 bits) . . . . . . . . . . . . . . . . . . Ecriture en mode tendu . . . . . . . . . . . . . . . . . . . Lecture en mode tendu . . . . . . . . . . . . . . . . . . . Ecriture puis lecture en mode tendu . . . . . . . . . . . . Ecriture en mode standard puis tendu . . . . . . . . . . . Exemple de connection du bus I2C au port srie . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

101 101 102 103 104 105 105 105 106 106 106 107 107 107 107 108 110 111 111 112 112 114 115 116 116 116 117 117 118 118 118 119 121 122 122 123 124 124 126 127 129 130 131 132 132 132 133

Exemple de connecteurs USB (A et B) . . . . . . . . . . . . . Composition (signaux) du cble USB . . . . . . . . . . . . . . Correspondance des signaux pour les connecteurs A et B . . . Structure toile srie . . . . . . . . . . . . . . . . . . . . . . . Topologie logique . . . . . . . . . . . . . . . . . . . . . . . . . Couches du protocole USB . . . . . . . . . . . . . . . . . . . . Frame USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paquet SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paquets de la trame USB . . . . . . . . . . . . . . . . . . . . Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structure d'un paquet USB) . . . . . . . . . . . . . . . . . . . Codage NRZI) . . . . . . . . . . . . . . . . . . . . . . . . . . Champ du paquet Token (Jeton) . . . . . . . . . . . . . . . . Champ du paquet SOF . . . . . . . . . . . . . . . . . . . . . . Champ du paquet DATA . . . . . . . . . . . . . . . . . . . . Champ du paquet Handshake . . . . . . . . . . . . . . . . . . Transfert de commande : transaction d'installation . . . . . . Transfert de commande : transaction dde donnes (facultatif) Transfert de commande : transaction d'tat . . . . . . . . . . Transfert en vrac . . . . . . . . . . . . . . . . . . . . . . . . . Transfert par interruption . . . . . . . . . . . . . . . . . . . . Transfert isochrone . . . . . . . . . . . . . . . . . . . . . . . . Hierarchie des descripteurs USB . . . . . . . . . . . . . . . . . Contrleur et Hub USB sur votre PC . . . . . . . . . . . . . . Topologie physique de l'IEEE 1394 . . . . . . Exemple de connecteur Firewire 6 broches . . Topologie logique de l'IEEE 1394 . . . . . . . Cycle nominal du bus IEEE 1394 . . . . . . . Dtails de la trame . . . . . . . . . . . . . . . Contenu des paquets asynchrone et isochrone Architecture en couche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CM_InfoIndus:version du mardi 29 novembre 2005 2 h 17

9.8 9.9 9.10 9.11 9.12 9.13

Transaction asynchrone) . Transaction isochrone) . . Intervalles pour l'arbitrage Split transaction . . . . . Concatenation transaction Unied transaction . . . .

. . . . . . . . (mode . . . . . . . . . . . .

. . . . . . . . . . . . isochrone) . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

134 134 136 137 137 137 139 142 142 143 144 144 146 146 148 148 150 150

10.1 Exemple de systme d'acquisition de donnes . 10.2 Architecture sommaire d'une carte d'acquisition 10.3 Schma de principe d'un CNA . . . . . . . . . . 10.4 Le CNA MX7537 . . . . . . . . . . . . . . . . . 10.5 Schma de principe d'un CAN . . . . . . . . . . 10.6 Le CAN AD574 . . . . . . . . . . . . . . . . . . 10.7 Architecture du timer 8254 . . . . . . . . . . . 10.8 Etapes du fonctionnement . . . . . . . . . . . . 10.9 8254 : modes 0,1 et 2 . . . . . . . . . . . . . . . 10.108254 : modes 3,4 et 5 . . . . . . . . . . . . . . . 10.11Dtails des registres du 8254 . . . . . . . . . . . 10.12Dtails des registres du 8254 (suite) . . . . . . .

155

Liste des tableaux


1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 4.1 4.2 4.3 5.1 5.2 6.1 6.2 6.3 6.4 6.5 6.6 7.1 8.1 8.2 8.3 Exemple : 33me vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . Quelques fonctions du BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelques fonctions du DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractristiques FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractristiques bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rcapitulatif des performances des principaux Bus . . . . . . . . . . . . . . . . . . . Table des Vecteurs d'Interruptions de la famille Intel X86 . . . . . . . . . . . . . . . Registre OCW1 du PIC 1 (0x21) et du PIC 2 (0xA1) . . . . . . . . . . . . . . . . . . Direntes caractristiques des ports parallles . . . . . . . . . . . . . . . . . . . . . Signaux des ports parallles SPP, EPP et ECP . . . . . . . . . . . . . . . . . . . . . Registres du 8255 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protocole : format d'une trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Brochage du port srie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tables des registres UART . . . . . . . . . . . . . . . . . . . . Nombres charger pour les vitesses de transmission . . . . . . Priorit des interruptions . . . . . . . . . . . . . . . . . . . . Seuils des FIFO (pour un FIFO 16 octets) . . . . . . . . . . . Nombre de bits de codage des donnes (payload) et de bits de Dirents types de parits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27 28 34 35 42 48 53 60 61 63 69 72 84 87 88 89 90 90

Adresses rserves pour le bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Valeurs des PID (USB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Erreur des paquets USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Caractristiques principales des types de transferts USB . . . . . . . . . . . . . . . . 125

10.1 registres du CNA (MX 7537) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 10.2 registres du CAN (AD 574) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 10.3 Rsum des registres de la carte  IMPULSION  . . . . . . . . . . . . . . . . . . . . . 149

156

Bibliographie
[Bey04] Beyondlogic USB in a Nutshell . www.beyondlogic.org, 2004. [HWe98] Hirsch E., Wendling S. Structure des ordinateurs . Armand Colin, 1998. [Pea97] Peacock C. Using Interrupts, www.senet.com.au/ cpeacock, 1997.

Interfacing

the

Serial

and

Parallel

ports .

[Tan03] Tanenbaum A. Architecture de l'ordinateur . 4me dition. Dunod, 2003. [TCGG02] Tichon J., Couwenbergh C., Giot R. et Garcia Acevedo S. Communication avec les priphriques . Techniques de l'Ingnieur, trait Informatique Industrielle, 2002.

157