Vous êtes sur la page 1sur 16

Units d'entre/sortie UE

On utilise ces CI d'entre/sortie en crivant et lisant des valeurs dans des registres internes:
Registre de donnes Ecriture et lecture
Registre de commande ou contrle ( en criture )
Registre d'tat ( Status ) ( en lecture )

Caractristiques

* Synchrone / Asynchrone:
- Synchrone: Une horloge est change => Pas d'cart, de drives
( plus compliqu mais meilleur dbit )
- Asynchrone: Pas d'horloge commune => Drives => Messages courts
*Srie: Renvoi des bits les uns aprs les autres
Intel: UART ( Universal Asynchronous Receiver Transmitter )
Motorola: ACIA ( Asynchronous Communication Interface Adapter )
* Parallle: Envoi des bits ensemble en parallle

=> Plus rapide


=> Plus compliqu car diaphonie, beaucoup de fils
Intel: PIO ( Parallel Input/Output )
Motorola: PIA ( Peripheral Interface Adapter )

* Spcialises:

Contrleurs USB, Ethernet, HDLC,...

Interface Srie V24 ( RS232 )


Signaux:

0: +12 V
Start = 0

Trame:

1
Ex: 7-P-1

1: -12 V
Stop et repos =1

repos

b0

b1

b2

b3

b4

b5

b6

Start

Connecteur DB9:
Broches sur DB25
Broches sur DB9
Gestion des contrles:
103 data Tx
ETTD
ex: PC

Parit: Nombre de 1 de (data et parit ) du type indiqu

108 DTR

Parit Stop
DP
(CD)
109
8

RD
(RX)
104
3

ED
(TX)
103
2

TDP
(DTR)
108
20

TS
(SG)
102
7

PDP
(DSR)
107
6

DPE
(RTS)
105
4

PAE
(CTS)
106
5

IA
(RI)
125
22

Start

Stop

Start

Carac + Parit

Stop

105 RTS

ETCD
ex: modem

107 DSR
106 CTS

attente

fin

Analogie
Le logiciel sur l'ETTD active le 108 DTR pour interroger
s'il y a un ETCD.
L'ETCD rpond par le 107 DSR qu'il est prt changer avec l'ETTD.
Si ensuite, l'ETTD veut mettre une donne => Il active RTS = 105.
L'ETCD indique qu'il est prt recevoir la donne de l'ETTD
et l'mettre en ligne => Il active CTS = 106
L'ETTD envoie sa donne sur le 103 Tx ( bit start ).

Y a quelqu'un ?
Oui je suis l !
C'est pour envoyer un message, c'est possible ?
Oui je suis prt, je peux le traiter !
Voici mon message envoyer !
Voil c'est fini pour celui l !

L'ETTD dsactive 105 RTS une fois la donne mise.


Il ractive 105 RTS pour demander mettre un caractre suivant
mais doit attendre que l'ETCD soit prt ( 106 CTS )
L'ETCD remonte le 106 CTS 1 une fois le caractre mis,
il est nouveau prt.
L'ETTD envoie alors son caractre suivant mettre
( bit start ) sur le 103 Tx .

Puis je en envoyer un suivant ?


J'ai fini le premier, on peux passer au suivant !
Voici le suivant envoyer !

Remarque: on peut liminer les contrles en les rebouclant sur la mme machine = Null Modem.
Cble crois null modem ( PC PC ):
Contrairement au cble droit
ETTD/ETCD ( PC modem )
o on relie les mmes broches
sur les 2 connecteurs,
pour le cble null modem
- on croise Tx et Rx
- on annule les contrles

UART Intel 8250


I) Prsentation du circuit
sur PC par dfaut:

COM1 : 0x3F8 COM2 : 0x2F8

Il y a plus de 8 registres diffrents et on n'a sur le circuit que 3 bits d'adressage interne.
=> Utilisation du bit DLAB qui va lever les ambiguits. Suivant DLAB, on slectionne tel ou tel registres.
Adresse
A2 A1 A0
0

si DLAB = 0

Registre

si DLAB = 1
RBR : Receiver Buffer (registre de rception) en lecture
DLL : Divisor Latch LSB (poids faible diviseur horloge)
THR : Transmitter Holding Register (registre d'mission) en criture
IER : Interrupt Enable Register
DLM : Divisor Latch MSB (poids fort diviseur horloge)
IIR : Interrupt Identification Register
LCR : Line Control Register
MCR : Modem Control Register
LSR : Line Status Register
MSR : Modem Status Register
Non utilis

Exemple : si l'adresse de base de l'interface = 3F8H, l'adresse du registre RBR sera 3F8H + 000 = 3F8H
celle de IIR 3F8H + 010b = 3F8H + 2H = 3FAH.
Mais les registres DLM et IER (par exemple) possdent la mme adresse (001 b).
=> bit DLAB ( bit de poids fort du registre LCR ): DLAB 0 cette adresse permet d'accder DLM,
DLAB=1 accs IER.
.
Choix de la rapidit de modulation = Dbit
115200 / vitesse = 256 * DLM + DLL

Registres de donnes:

Registre THR : Registre d'mission. ( broche WR active )


Registre RBR : Registre de rception. ( broche RD active )

Registre LCR (Line Control Register) : Registre de commande pour dfinir certains paramtres de la transmission.
B7
B6
B5
B4
B3
B2
B1
B0
0 : parit
0: Sans parit
B1B0=00 : 5 bits de data
0 : 1 bit
DLAB
0
0
impaire
1: Avec parit
B1B0=01 : 6 bits de data
stop
1 : Parit paire
B1B0=10 : 7 bits de data
1 : 2 bits stop

B1B0=11 : 8 bits de data

Registre IER : Utilis pour les entres/sorties par interruption.

Bit 0 : interruption lorsque donne reue dans RBR;


Bit 1 : interruption lorsque registre THR vide;
Bit 2 : interruption lorsque l'un des 4 bits de poids faible de LSR passe 1;
Bit 3 : interruption sur tat du modem.

Registre LSR : Registre d'tat indiquant le fonctionnement en rception (bits 0 4) et en mission (bits 5 et 6).
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7

Registre IIR :

passe 1 lorsqu'une donne a t reue et charge dans RBR.


signale erreur d'crasement. 1 si donne reue et charge dans RBR alors que la prcdente n'avait pas t lue.
Remis automatiquement 0 par la lecture du registre LSR.
passe 1 la suite d'une erreur de parit. Remis 0 par la lecture de LSR.
passe 1 lorsque le niveau du bit STOP n'est pas valide (erreur de format). Remis 0 par la lecture de LSR.
passe 1 lorsque le niveau de la liaison est rest 0 pendant la dure d'mission de la donne (problme de
l'emetteur). Remis 0 par la lecture de LSR.
passe 1 lorsqu'une donne est transfre de THR vers le registre dcalage d'mission (THR est alors libre pour le
caractre suivant).
passe 1 lorsque le registre dcalage d'mission est vide.
Toujours 0

IIR est utilis pour les interruptions. Il permet d'identifier la cause de l'interruption mise par l'UART.

Registre MCR : MCR est le registre de commande du modem.


Bit 0 : commande le niveau de DTR qui informe le modem que le port srie du PC est prt communiquer;
Bit 1 : commande RTS: Le port srie du PC demande au modem s'il est prt recevoir une donne.

Registre MSR : MSR est le registre d'tat du fonctionnement du modem.


Bit 0 : Changement de CTS
Bit 1 : Changement de DSR
Bit 2 : Changement de RING

II) Programmation de l'interface en langage C


Init :

DLAB 1 : ouptortb(LCR,0x80)
DLL en adbase
DLM en adbase+1
Config en LCR

Lecture_bit_registre :
Lire val, Masque=1, masque=masque<<nbit, val = val&masque ( & = ET binaire pas logique )
Si val nul alors return 0 sinon return 1
Rception carac par scrutation ( polling ) :
Tant que bit 0 de LSR = 0 : attendre
Lire la registre de donnes
Emission carac :
Ecrire le registre de donnes
Tant que bit 6 de LSR = 0 : attendre
Interruptions :
Il faut dtourner les interruptions
( void interrupt (*ancien_sousprg ), void interrupt nouveau_sousprog(); ,
getvect , setvect avec 0x0C pour COM1, 0x0B pour COM2 )
Il faut autoriser les interruptions sur le PIC ( mettre 0 le bit 4 pour COM1 ou 3 pour COM2 de 0x21 )
Remarque : Sur certaines cartes, la sortie OUT2 de lUART intervient dans le contrle dinterruption.
Il est parfois ncessaire de la mettre 1 ( bit 3 mis 1 dans MCR )
Il faut acquitter les interruptions dans le sous prog : outportb(0x20,0x20)
3

Port parallle Motorola PIA 6821


Le PIA 6821 (Peripherical Interface Adapter) donne 2 ports parallles bidirectionnels 8 bits et 4 lignes de contrle.
Chacune des lignes de donnes vers la priphrie (Port A et B) peut tre programme pour tre utilise soit en entre, soit en
sortie partir des registres internes et du bus de donnes.

bus de donnes (D0 D7)


bidirectionnel vers le MPU

2 bus de donnes (ou port


A-B) bidirectionnels vers la
priphrie

2 registres de contrle
programmables

4
lignes
dinterruption
individuellement

dentre
contrlables

Lien P / UE:
Bus de donnes (D0 D7) : 8 lignes bidirectionnelles directement relies au bus du P.
Bus dadresses :
- CS0, CS1, /CS2 (Chip Select) : Slectionnent le botier PIA (CS0 CS1 /CS2 = 1 1 0)
- RS0, RS1 (Register Select) : Slectionnent les registres internes (=> 4 adresses de registres).
Bus de contrle :
- E : Signal dactivation des changes
- /RESET : Initialisation du PIA. Les registres internes sont mis zro.
- R/W : Lecture - Ecriture
- IRQA, IRQB : Lignes dinterruptions
Lignes UE/extrieur: PA0 PA7, PB0 PB7 : Suivant la programmation du DDRA/DDRB, ces broches seront
utilises en entre ou en sortie.
FONCTIONNEMENT :
De la priphrie vers le processeur :
La donne disponible sur le port A en rception (port A configur en entre) est directement transmise lamplificateur de bus
de donnes par lintermdiaire du bus de sortie. Elle ne transite pas par lORA => pas mmorisation des donnes en entre.
Du processeur vers la priphrie :
La donne disponible sur le bus du MPU est charge dans le registre de sortie B par lintermdiaire du bus dentre, elle est
donc mmorise. Le port B est en sortie, la donne est disponible tant quune nouvelle criture nest pas intervenue.
4

Slection des registres :


Pour accder un registre, l'adresse
- slectionne le botier PIA ( dcodage
d'adresse commandant CSX)
- slectionne le registre interne par RS1 et
RS0.
Ex :

ADR = 0xE000 (adresse de base)


ADR+1 = 0xE001
ADR+2 = 0xE002
ADR+3 = 0xE003

Registre de contrle CRA - CRB :

Ce registre contrle les ports de sortie A et B.


On y accde en ADR+1 ( tats sur RS1 et RS0 ).
Ce registre va permettre daccder aux autres registres :
DDRA-DDRB et ORA-ORB partir du bit 2 du registre de
contrle : 0 -> Accs DDR,
1-> Accs OR

Registres de sortie ORA ORB :

Registres dans lesquels vont transiter les donnes. Pour lire une donne reue par un port, il suffira de lire le contenu de ce
registre.

Registres de direction DDRA DDRB :

Ils dfinissent le sens de transfert de chacune des lignes des ports A et B.

0 -> ligne en entre.


1 -> ligne en sortie,
Ex : pour mettre la ligne PB4 en entre et toutes les autres en sortie, il faut crire la valeur 0xEF dans le registre DDRB.

PROGRAMMATION DINITIALISATION DU PIA :


Exemple port A en entre, port B en sortie.
Accder au CRA

Accder au CRB

Accder au DDRA

Accder au DDRB

Port A en entre

Port B en sortie

Accder au CRA

Accder au CRB

Accder au ORA

Accder au ORB

Port parallle de PC: Intel


La liaison srie sur un PC saccompagne de limitations de dbit et de distance.
=> Pour amliorer la distance: Modems avec rseau d'un oprateur de Tlcoms.
=> Pour amliorer le dbit: Faire passer plusieurs bits en parallle.
Mais la diaphonie ( interfrences lectromagntiques entre fils ) limitent encore plus la distance.
Et il faut plus de fils => cot plus lev.
Pour les systmes microprocesseur, on dispose de circuit simple pour la liaison parallle comme le PIO 8255 similaire au
PIA 6821. Pour les PC, on utilise des systmes plus performants.

I) Historique
En 1981, IBM inclut un port parallle sur le PC pour des transmissions plus rapides que les liaisons sries:
Mode standard : SPP unidirectionnel 8 bits ( crire vers une imprimante ).
Mode quartet ( Nibble mode ): "Bidirectionnel" 4 bits en utilisant 4 lignes de contrle entrantes.
Mode octet ( Byte mode ): Bidirectionnel 8 bits: Les circuits lectroniques donnent des lignes bidirectionnelles, plus
besoin de mettre des donnes sur les lignes de contrle.
Mais la transmission est limite en dbit ( 150 ko/s sortant ) car demandant beaucoup de traitements logiciels ( pas de
DMA ), nest pas dfinie par un standard lectrique => problmes dinteroprabilit, est limite en distance par la puissance
des drivers de ligne lectroniques.
Mode EPP = IEEE1284: En 1991 bidirectionnel "haut dbit" ( plus de 1 Mo/s ), compatible SPP, Quartet, Octet.
De dbit infrieur celui du bus ISA (8Mo/s), il permet l'mission/rception avec des priphriques amovibles avant
USB ( lecteurs de CD-ROM ou disques durs ).
Mode ECP (Extended Capacity Port): Plug and Play ( branchez et utilisez) et transferts amliors ( traitements
logiciels, compression, canaux logiques, ... )
Les modes Standard et quartet peuvent tre utiliss sur tout circuit parallle.
Les autres modes demandent que le circuit lectronique soit prvu pour ces fonctionnements.
Le choix du mode de fonctionnement SPP, EPP ou ECP se fait dans le BIOS.

II) Broches et registres du port parallle


Le port parallle sur PC est fait de 17 signaux et 8 broches la masse. Les signaux sont de 3 catgories :
+ Signaux de contrle ( 4 ) : Ecriture pour contrle de liaison ( Handshake = enchanement de requtes/rponses pour
le droulement de la transmission ).
+ Signaux dtat ( 5 ) : Lecture des indication de ltat des appareils, de cause de problme.
+ Signaux de donnes ( 8 ) : PC vers le priphrique lorigine, bidirectionnele ensuite.
Dans la dfinition originale ( SPP : Standard Parallel Mode ), le port parallle du PC est ddi aux imprimantes cest pourquoi
on trouve des noms de broches lis limpression :

Groupe

SPP Signal
/STROBE

Contrle

/AUTOFEED
/SELECT IN

/INIT

In/Out
Out
broche 1
Out
broche 14
Out
broche 17

Out

broche 16

Signal Description
Actif bas. Le PC indique la prsence certaine de donnes valides sur la
ligne ( elles le sont avant ).
Actif bas. Indique limprimante dinsrer automatiquement un saut de
ligne en plus du retour chariot chaque return.
Actif bas. Indique limprimante quelle est slectionne.

Actif bas. Utilis pour envoyer un reset limprimante.

L'imprimante envoie une impulsion 0 sur cette ligne pour indiquer


l'ordinateur qu'elle a bien reu le caractre transmis
et quil peut continuer la transmission.
Cette ligne est mise 1 par l'imprimante lorsque son buffer de rception
In
est plein ( contrle de flux matriel ).
broche 11
Le PC doit attendre que cette ligne revienne 0 pour r-mettre.
In
Limprimante indique quil ny a plus de papier ( Paper Error )
broche 12
In
Cette ligne indique l'ordinateur si l'imprimante est "on line" ou "off line".
broche 13
In
Limprimante indique une erreur au PC.
broche 15
Out
8 lignes de donnes- seulement en sortie en SPP.
broche 2 = D0, 3 = D1, 4 = D2, 5 = D3, ..., 9 = D7
In
broche 10

/ACK

BUSY
Etat
PE
SELECT
/ERROR
Donnes

DATA[8:1]

Broches 18 25 = Masse

Remarque: /A ou nA indique Complment de A . Ici cela indique des variables actives sur niveau bas.
Le lien entre le matriel et le logiciel se fait par des registres : Le port parallle est install une adresse de base ADR
( 378h ou 278h habituellement ). Les registres du port parallles sont au nombre de 3 :
Registre de donnes en ADR est :
7
D7 = MSB

6
D6

5
D5

4
D4

3
D3

2
D2

1
D1

0
D0 = LSB

Il nest accessible quen criture dans les premiers modes SPP.

Registre dtat en ADR+1 est :


7
BUSY

6
/ACK

5
PE

4
SELECT

3
/ERROR

2
Non dfini

1
Non dfini

0
Non dfini

5
DIR

4
IRQ
ENABLE

3
SELECT IN

2
/INIT

1
AUTOFEED

0
/STROBE

Il nest accessible quen lecture.

Registre de contrle en ADR+2 est :


7
Non dfini

6
Non dfini

Il est accessible en lecture et en criture.


Le bit 4 autorise ou non une interruption lorsque ACK passe 0 ( limprimante valide la Rception dun caractre ).
Le bit 5 ne sert que pour les modes bidirectionnels : Ce bit 1 rend le port accessible en criture.

III) Modes de fonctionnement SPP ( standard ou Centronics )


Modes SPP
On distingue 2 modes SPP
Mode Quartet SPP A l'origine
( Nibble Mode )

4 bits en entre du PC (broches de statuts BUSY, PE, SELECT, /ERROR),


8 bits en sortie ( broches data unidirectionnelles ).

=> Liaison bidirectionnelle de donnes malgr un circuit lectronique unidirectionnel pour ses
lignes de donnes. Mais le dbit est limit 50 ko/s
Mode Octet SPP
( Byte Mode )

8 bits de donnes bidirectionnelles sur les systmes modernes.


Le sens est command par le bit 5 DIR du registre de contrle
Mais la gestion des changes reste la mme quauparavant.
Remarque: Les noms de broches changent pour sortir d'une unique utilisation par imprimante:
/Autofeed -> HostBusy ,
Busy -> PtrBusy,
/Strobe -> HostClk
/SelectIn -> 1284 Active ( IEEE 1284 ),
/ACK -> PtrClk,
/Ack -> PtrClk,
...

Principe des changes: Handshake Strobe/Ack


a) Ecriture
Les donnes sont places sur les lignes data.

1.
2.
3.
4.

Ecrire les donnes dans le registre de donnes ( => Elles sont sur les fils de sortie )
Lire BUSY dans le registre dtat pour vrifier que limprimante nest pas occupe.
Ecrire /STROBE = 0 si elle ne lest pas dans le registre de contrle.
Lire ACK = Attendre que la rception soit signale par le rcepteur pour passer la donne suivante.

b) Lecture ( avec les noms de broches du mode octet )

1. Le PC signale quil est prt recevoir en mettant HostBusy bas


2. Le priphrique rpond en plaant les donnes sur les lignes de donnes
3. Le priphrique indique que loctet est valide en passant PtrClk bas
4. Le PC met HostBusy haut pour indiquer quil a reu et quil nest pas encore prt pour un suivant
5. Le priphrique met PtrClk haut pour acquitter cette information.
Le PC applique une impulsion HostClk pour acquitter son tour. Le priphrique peut changer les donnes.

=> Beaucoup de contrles via logiciel=> gestion lourde et pnible =>Dbit encore limit => 150 ko/s en SPP.

IV) Modes tendus


=> En 1991, mode tendu EPP => Autre type de transfert
=> Le circuit gre les changes ( gnre automatiquement les signaux de contrle )
Il est contrleur de lchange parallle ce qui dcharge le P.
Mode EPP ( Enhanced Parallel Port )
- Le Handshake est gr par le contrleur, pas par le logiciel ( chip dI/O 82360 ).
- Le protocole EPP ajoute des types de cycles de transfert de donnes :
- Ecriture/Lecture de donnes ( Data_Write cycle, Data_Read cycle )
- Ecriture/Lecture d"adresse" = 2 octets ( Address_Write cycle, Address_Read cycle )
8

- Pour grer cela et rester compatible avec SPP, on ajoute des registres en ADR+3 et ADR+4 pour les transferts EPP.
=> Une simple instruction dcriture en ADR+4 = le contrleur EPP gre automatiquement les signaux.
=> On arrive 2 Mo/s

- Proche du bus interne ISA = 6 Mo/s.


- Les handshakes imbriqus font que la vitesse est fixe par le terminal le moins rapide.

Remarque : Sur les PC actuels on a un contrleur AIP ( Advanced Integrated Peripherical ) qui fait contrleur de port srie, port parallle, de disquette,
Mode ECP ( Extended Capability Port )
ECP propos par HP et Microsoft ajoute EPP des contrles de la gestion du matriel.
=> Autres cycles d'changes: Donnes / Commandes
=> Plug and Play
=> Gestion FIFO ( buffer dcouplant transferts entrant / sortant )
=> Compression temps rel RLE ( taux de 64 pour image vers imprimante ou scanner ).,
=> Utilisation de transfert DMA ( Direct Memory Access ) = Dcharge microprocesseur.
=> Adressage de canal ( plusieurs appareils logiques sur une seule liaison physique = fax/modem/imprimante
ou scanner/imprimante ).
- ECP est fait pour gros transferts.
- On ajoute des registres en ADR+400 h, ADR+ 401 h et ADR + 402 h.
Le mode ECP est dfini par le BIOS. Puis un mode de fonctionnement est dfini dans le registre ECR ( Extended Control
Register ). Il est ADR+ 402 h
Bit 7
Bit 6
Bit 5
Mode ( selon tableau prcdent )

Bit 4
Interruption
ECP

Bit 3
Autorisation
mode DMA

Bit 2
Bit de service
ECP

Bit 1
FIFO
pleine

Bit 0
FIFO
Vide

Mode = 000 pour fonctionnement SPP, 001 pour mode octet, 011 pour ECP, 110 pour mode test,...

Bus USB ( Universal Serial Bus )


Dveloppement de linformatique grand public => besoin de plus de liaisons,
=> besoin de plug and play,
=> besoin de multimdia = acheminer diffrents flux
USB grce aux progrs de l'lectronique rpond ces besoins avec des contrleurs plus performants. Il utilise une liaison srie
semi-duplex mais haut dbit et suivant un protocole trs volu.
=> La complexit diminue pour lusager avec le plug and play, donc elle augmente pour le protocole.
On distingue les versions

USB1.0 : dbit maxi de 1,5 Mbit/s ( Low Speed )


USB1.1 : Dbit maxi de 12 Mbit/s ( Full Speed )
USB2.0 : Dbit maxi 480 Mbit/s ( High Speed )
USB3.0 : Dbit maxi 5 Gbit/s ( Super Speed )

I) Prsentation
Un systme de communication USB est constitu des lments suivants :
Un hte

Il ny a quun seul hte qui doit grer les changes de tout le bus. Il arbitre les accs au bus.

Un hub

Comme les hubs de rseau, il fournit des points de connexion, la topologie logique tant en toile. Tout
appareil USB est connect directement lhte sur le plan logique mme si on a plusieurs hubs en cascade
( un hub est transparent sur le plan logique ).
Les principales fonctions du hub hormis la connexion physique sont :
- la responsabilit de dtecter lattachement ou le dtachement dun appareil.
- la gestion de lalimentation des appareils auto-aliments par le bus USB.
- la dtection derreur sur le bus et la correction.
- la dtection de la vitesse dun appareil

Un priphrique
USB

Tout ce qui nest pas hte est un priphrique USB ( hub compris ).
On distingue les priphriques autoaliments ou non par le bus USB

Remarque : Lobjectif tant la simplicit dutilisation, on a 2 types de prises permettant de ne pas se tromper dans le chanage
des appareils.
Dans tout priphrique USB, on trouve le SIE ( Serial Interface Engine ) :
- Srialisation et dsrialisation des donnes : Les donnes sont transmises en srie.
- Codage NRZI des donnes et linsertion de 0 sans signification pour faire varier le signal lectrique ( voir plus loin ).
- Ajout de CRC ( contrle derreur ) pour les donnes sortantes et vrification du CRC reu en rception
- Il dtecte enfin lidentit dun paquet et ltat du bus.
Dans lhte USB, en plus du SIE on a aussi le HC ( Host Controller ). Ce contrleur est llment important qui initie les
changes, contrle laccs au bus, contrle que tout se droule selon le protocole USB.
Les principales fonctions du HC sont :
- Gnration de trame :

Le HC dcoupe la transmission en intervalles de 1 ms : Trame


Il envoie rgulirement un paquet SOF ( start of frame )
- Gestion dchange de donnes : Le HC gre les requtes de transfert de donnes dans les 2 sens.
- Gestion du protocole USB : Le HC enchane les changes selon le protocole USB.
- Contrle derreur : Le HC gre les erreurs telles que :
+ Non rponse par un timeout
+ Bit erron par systme de CRC
+ Entte errone avant des donnes
- Reprise distance : Le HC peut mettre en veille un priphrique, dtecter une demande de sortie de cet tat
par le priphrique, le sortir de cet tat.

10

II) Description des changes physiques USB


Le cble USB1 et 2 est fait de 4 fils :

- 2 fils pour dalimentation Vbus ( +5V ) et GND ( 0V )


- 2 fils pour les donnes : Paire diffrentielle D+ et D- .

La transmission est bidirectionnelle mais en semi-duplex sur le plan lectronique. On verra les types de transferts qui
permettent de sapprocher dune liaison duplex grce la vitesse des changes.
Le niveau physique dfinit les donnes suivantes : 0 diffrentiel : D+ bas, D- haut
1 diffrentiel : D+ haut, D- bas
SEO ( Single ended zero ) : D+ bas, D- bas
Les rsistances de terminaison de bus ( power down ) le place en tat de veille ( Idle ) au repos.
Une rsistances de tirage 5V ct priphrique permet en dbut de connexion didentifier le dbit
( sur D- => USB 1.0 = bas dbit
sur D+ => USB1.1 = haut dbit
Pour un appareil USB2, il commence un dialogue en USB1 full speed et dialogue avec le contrleur pour
passer en USB2. Idem en USB3 )

On dfinit diffrents tats du bus :


- tat J : "1" diffrentiel pour les appareils haut dbit, "0" diffrentiel pour les appareils bas dbits
- tat K : "0" diffrentiel pour les appareils haut dbit, "1" diffrentiel pour les appareils bas dbits
- tat de veille ( idle state ) : Electriquement cest ltat J mais dans le droulement des oprations
ce nest pas la mme chose car ltat J est impos par une source alors
quen tat de veille la source est inactive.
On rencontre dautres utilisations lies aux niveaux lectriques que la transmission dinformations :
Reset
Suspension
Reprise
SOP

( Start of packet )

EOP

( end of packet )

Lhte peut rinitialiser un priphrique : Il envoie SEO plus de 2.5s ( normalement 10 ms ! ).


Lhte peut mettre le priphrique dans un mode veille ( pas de trafic ). Il passe en veille quand il
reconnatra ltat veille ( idle state ) sur le bus plus de 3 ms = La source nimpose plus de tension.
Le priphrique reste en coute du bus.
Un priphrique en veille reprend le trafic en reconnaissant ltat K sur le bus ( ltat de veille tant
lectriquement identique ltat J ). Lhte envoie cet tat K pendant au moins 20 ms.
Un priphrique peut parfois se ractiver lui-mme au bout dun certain temps.
Pour indiquer le dbut dun paquet
Au passage de ltat de veille ( identique lectriquement J ) ltat K
Pour indiquer la fin dun paquet
EOP est fait de SE0 sur 2 bits puis de ltat J sur 1 bit.

- Le LSB est transmis en premier dans les changes.


- Le codage est NRZI : 1 = mmoire, 0 basculement ( 1 ici = info envoyer = 1 logique ne pas confondre avec 1 lectrique ).

11

Remarque : Une longue suite de 1 donne un niveau lectrique constant => Problme de rcupration dhorloge du rcepteur
=> USB utilise linsertion de bit ( bit stuffing ) : Aprs 6 bits 1 successifs, il y a insertion dun 0. Le rcepteur l'liminera.

III) Le protocole USB


Droulement dun change USB
Lhte USB a en charge la plupart de la complexit du protocole => Conception priphrique simple et peu coteuse.
Les donnes sont changes dans les 2 sens sous forme de paquets. Un change se droulera selon 3 phases :
Lhte lance le jeton en indiquant le type de la transaction venir.
Phase du jeton (Token phase) :
Phase de transfert de donnes :
Phase de Handshake :

Les donnes sont mises sous forme de paquets. La direction des


donnes suit celle indique par le jeton transmis auparavant.

Un paquet de Handshake est envoy indiquant le succs ou lchec de


lchange.

USB est un protocole scrutation ( polling ) :


Lhte veut recevoir des donnes dun priphrique => il envoie un jeton avec ladresse de celui-ci. Si le
priphrique a des donnes envoyer, il les envoie aprs rception du jeton. Sil na rien, lhte envoie un
jeton adress au priphrique suivant.
Si lhte veut envoyer des donnes vers un priphrique, il envoie un jeton avec ladresse de celui-ci puis les
donnes.
Une transaction a eu lieu chaque fois que lon ralise le cycle Jeton-Donnes-Handshake.
Le protocole inclut des systmes de Handshake, des chiens de garde, des systmes de correction derreurs afin davoir
un systme robuste.
Le branchement chaud dun priphrique modifie la valeur lectrique sur le bus ce qui permet lhte de dtecter
cette prsence. Ensuite lhte pourra sinformer et configurer le priphrique ( pas besoin de redmarrer le PC pour dtecter le
priphrique ).
Diffrents transferts possibles
USB traite des flux diffrents => Qualit de service. On dfinit diffrents types dchanges sur le bus:

Utilisable en bas dbit


Intgre une correction derreur
Garantit le dbit
Garantit le non dpassement dune latence
maximale( dlai de transmission )
Application typique

Contrle
Oui

Types de transfert
Bulk
Interruption

Isochrone

Non

Oui

Oui

Oui

Oui

Non

Non

Non

Non

Oui

Non

Non

Oui

Oui

Configuration
dun appareil

Imprimante

Souris

Son ou image

Non

Les transferts se faisant en 3 phases ( jeton, donnes, handshake ), la diffrence entre transferts se fera donc sur la
gestion de la communication ( priodicit, protection contre les erreurs, ).
Diffrents paquets changs
a) Champs intervenants dans USB
Champ SYNC :

Dbut de chaque paquet = Etat de veille ( Idle quivalent lectrique ltat J ) suivi
de "KJKJKJKK" = en NRZI 00000001. Ainsi le rcepteur se synchronise.

12

Champ PID :

Type du paquet. ( 8 bits = 4 premiers pour lidentit du paquet


puis le complment des 4 premiers envoys par scurit ).
- Paquet jeton
( token )

JETON OUT : transfert hte vers priphrique venir.


JETON IN : transfert priphrique lhte venir.
JETON SETUP : Paquet venir de lhte au priphrique pour la configuration.

Champ Adresse :

- Paquet SOF

Le PID indique un paquet SOF ( Start Of Frame ).

- Paquet de Donnes

Le PID de donnes peut tre DATA0 ou DATA1. => Cela ajoute un test de
synchronisation des transferts : Les data doivent alterner entre DATA0 et DATA1.

- Paquet de Handshake

Un paquet handshake indique le succs ou lchec dune procdure.


Le PID indiquera si le paquet Handshake est ACK, NAK ou STALL :
ACK : Acquittement = tout sest bien droul.
NAK : Le rcepteur ne peut plus recevoir de donnes ou lmetteur ne peut
Plus en mettre => Contrle de flux.
STALL : La commande de SETUP nest pas comprise.

Il est divis en 2 parties :


- Adresse ( ADDR ) : 7 bits pour dfinir le priphrique.
Ladresse 0 est rserve comme une voie de broadcast.
- Endpoint ( ENDP ): 4 bits pour dfinir des fonctions internes diffrentes un
mme priphrique ( scanner et imprimante par exemple ).
Le endpoint 0 est rserve pour le broadcast (va avec adresse 0 ).

Champ Numro de trame :

Il indique sur 11 bits le numro de trame dans les paquets SOF ( start of
frame ). La trame est lensemble des transmissions sur 1ms.

Champ Donne :

Il contient les donnes changes dans les paquets de donnes.


Il peut aller jusqu 1023 octets.

Champ CRC :

Dtection des erreurs : cyclic redundancy check.


Sa longueur varie selon le type de paquet.

b) Paquet Jeton ( TOKEN )


Paquet de 24 bits
Si le PID est 1000b => Jeton OUT
( MSB gauche mais LSB mis en premier )
Si le PID est 1001b => Jeton IN
Si le PID est 1011b => Jeton SETUP

c) Paquet SOF ( Start Of Frame )


Paquet de 24 bits
le PID est 1010b

13

d) Paquet de donne
Paquet de 24 bits plus les donnes (jusqu
1024 octets )
Si le PID est 1100 en binaire : DATA0
Si le PID est 1101 en binaire : DATA1

e) Paquet de Handshake
Paquet de 8 bits
PID = 0100 en binaire => ACK : Succs de la procdure
PID = 0101 en binaire => NACK : Echec de la procdure
PID = 0111 en binaire => STALL : Commande non comprise
Exemple:

Transfert de contrle
Ce transfert sert la configuration. Elle est faite par un processus dnumration. Quand un appareil se connecte,
lhte a besoin dapprendre ses caractristiques et de le configurer.
La transaction dans un transfert de contrle se droule selon les phases :
1) Phase de SETUP
a) Phase de Jeton
b) Phase de donnes
c) Phase de Handshake
2) Phase de donnes
a) Phase de Jeton
( optionnelle )
b) Phase de donnes
c) Phase de Handshake
3) Phase dtat ( status )
a) Phase de Jeton
b) Phase de donnes
c) Phase de Handshake
La phase de SETUP sert indiquer au priphrique quelle commande lhte veut envoyer :

- Commande SET_ADRESS : Affectation dune adresse


- Commande GET_DEVICE_DESCRIPTOR : Lhte veut les caractristiques du priphrique.
- Commande GET_CONFIGURATION_DESCRIPTOR : Lhte souhaite en savoir plus sur un point particulier.
- Commande GET_CONFIGURATION : Lhte dtecte la configuration active ce moment.
- Commande SET_CONFIGURATION : Lhte impose une configuration.

=> Lhte envoie un paquet jeton SETUP, suivi par le paquet dcrivant la commande, le priphrique doit
rpondre par un paquet de Handshake ACK.
14

La phase de donnes sert changer des donnes. On peut avoir plusieurs transactions conscutives, soit entrantes, soit
sortantes, mais toutes de mme direction.
=> LHte rpte les transactions : Envoi dun paquet jeton IN ou OUT, change des donnes, dun paquet de
Handshake pour terminer la transaction.
La phase dtat consiste en un rapport du priphrique lhte concernant les 2 phases prcdentes.
Paquet Jeton SETUP

SETUP

Donnes de SETUP
Paquet de Handshake ACK
Paquet Jeton IN

Hte

Paquet de donnes
Donnes

Paquet de Handshake ACK

Priphrique

Paquet jeton IN
Paquet donnes
Paquet de Handshake ACK
Paquet Jeton OUT

Etat

Donnes
Paquet de Handshake ACK

Transfert Bulk
Transfert Bulk = transfert massif de donnes.
=> La bande passante alloue ( par le temps allou ) dpend de loccupation du bus.
=> Le transfert doit tre fiable => Utilisation dacquittement.
La transaction pour un tel type de transfert se droule selon les 3 phases Jeton-Donnes-Handshake.
En cas derreur dtecte, il ny a pas dacquittement par lmission dun paquet de Handshake.
Si un priphrique ne peut rpondre une demande de transfert de lhte par un jeton IN, au lieu du paquet de donne
il envoie un paquet de Handshake NAK ( retransmission demande ) ou STALL ( abandon ).

Transfert dinterruption
Le transfert dinterruption = faible dlai dattente ( souris, joystick ) ET faible volume de donnes.
=> Un priphrique dans ce mode dfinira la config lintervalle de temps entre lenvoi de 2 informations.
Lhte devra contacter le priphrique priodiquement selon cet intervalle de temps.
Le droulement est le mme que pour le transfert Bulk.

Transfert isochrone
Le transfert isochrone = changes temps rel continu ( audio, la vido ).
=> Garantie de bande passante pour ce transfert qui est prioritaire = Lhte garantit un accs priodique.
En revanche la fiabilit est moins contrle que pour les autres transferts donc on se passe dacquittement.
=> La transaction en transfert isochrone = rptition de transactions 2 phases Jeton-Donnes ( pas de Handshake ).
15

Lhte envoie un paquet jeton IN pour recevoir des donnes ou OUT pour en mettre. Puis les donnes sont changes.
Transfert
Isochrone
OUT

Jeton OUT

Donnes

Hte

Priphrique
Transfert
Isochrone
IN

Jeton IN

Donnes

IV) Evolution USB3 = SUPERSPEED


On ajoutes des fils pour les changes SuperSpeed,
mais on garde le cblage prcdent 4 fils pour la rtro-compatibilit ( D+ D- VBUS GND ).

On ajoute de nouveaux connecteurs en gardant la rtro-compatibilit

Le SUPERSPEED passe du semi-duplex au full duplex ( 2 fils SSRX, 2 fils SSTX ).


Il utilise le codage de ligne 8B/10B ( voir annexe de la spcification USB3 ).
SUPERSPEED ajoute un nouveau type de transfert: Bulk Streams ( transfert Bulk pour plusieurs flux )
ajoute de nouveaux paquets NRDY et ERDY
et modifie les transactions ( Token, Data et Handshake en USB1 et USB2 ):
- Lors d'une mission (outs), les phases Token et Data d'une transaction sont regroupes.
- Lors d'une rception (ins), les phases Data et Handshake d'une transaction sont regroupes.
Ngociation l'origine ( USB device enumeration ): Comme en USB2, on commence en USB1.1 puis un message
aprs premier reste indique de chager de mode ( pour USB2: Squence Chirp K )
voir http://www.abcelectronique.com/acquier/usb7_fr.htm#Enumeration
http://www.youtube.com/watch?v=5ChWxMLKzOs (Debugging USB Superspeed Device Enumeration )
Puissance de l'alimentation plus leve: Courant de 1,5 A ( pics de 5A possibles ) pour recharger des batteries.
16

Vous aimerez peut-être aussi