Vous êtes sur la page 1sur 16

1

C
C
C
C
C

C

fin

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 1: -12 V
Start = 0 Stop et repos =1 Parit: Nombre de 1 de (data et parit ) du type indiqu

Trame: 1
repos
Ex: 7-P-1 b0 b1 b2 b3 b4 b5 b6
0
Start Parit Stop


Connecteur DB9:

DP
(CD)
109
RD
(RX)
104
ED
(TX)
103
TDP
(DTR)
108
TS
(SG)
102
PDP
(DSR)
107
DPE
(RTS)
105
PAE
(CTS)
106
IA
(RI)
125
Broches sur DB25
8 3 2 20 7 6 4 5 22
Broches sur DB9
1 2 3 4 5 6 7 8 9


Gestion des contrles:
Start Stop Start
103 data Tx

ETTD 108 DTR
ex: PC

105 RTS


attente
107 DSR
ETCD
ex: modem
106 CTS

Carac + Parit
Stop
2
Analogie

C Le logiciel sur l'ETTD active le 108 DTR pour interroger
s'il y a un ETCD.

Y a quelqu'un ?

C L'ETCD rpond par le 107 DSR qu'il est prt changer avec l'ETTD.
+ Oui je suis l !

C Si ensuite, l'ETTD veut mettre une donne => Il active RTS = 105.
C'est pour envoyer un message, c'est possible ?

C L'ETCD indique qu'il est prt recevoir la donne de l'ETTD
et l'mettre en ligne => Il active CTS = 106

+ Oui je suis prt, je peux le traiter !
C L'ETTD envoie sa donne sur le 103 Tx ( bit start ).
Voici mon message envoyer !

L'ETTD dsactive 105 RTS une fois la donne mise.
Voil c'est fini pour celui l !

C Il ractive 105 RTS pour demander mettre un caractre suivant
mais doit attendre que l'ETCD soit prt ( 106 CTS )

Puis je en envoyer un suivant ?
L'ETCD remonte le 106 CTS 1 une fois le caractre mis,
il est nouveau prt.

+ J'ai fini le premier, on peux passer au suivant !
L'ETTD envoie alors son caractre suivant mettre
( bit start ) sur le 103 Tx .

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 Registre
A2 A1 A0 si DLAB = 0 si DLAB = 1
0 0 0
RBR : Receiver Buffer (registre de rception) en lecture
THR : Transmitter Holding Register (registre d'mission) en criture
DLL : Divisor Latch LSB (poids faible diviseur horloge)
0 0 1 IER : Interrupt Enable Register
DLM : Divisor Latch MSB (poids fort diviseur horloge)
0 1 0
IIR : Interrupt Identification Register
0 1 1
LCR : Line Control Register
1 0 0
MCR : Modem Control Register
1 0 1
LSR : Line Status Register
1 1 0
MSR : Modem Status Register
1 1 1
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


3
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

DLAB

0

0
0 : parit
impaire
1 : Parit paire
0: Sans parit
1: Avec parit
0 : 1 bit
stop
1 : 2 bits stop
B1B0=00 : 5 bits de data
B1B0=01 : 6 bits de data
B1B0=10 : 7 bits de data
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 passe 1 lorsqu'une donne a t reue et charge dans RBR.
Bit 1 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.
Bit 2 passe 1 la suite d'une erreur de parit. Remis 0 par la lecture de LSR.
Bit 3 passe 1 lorsque le niveau du bit STOP n'est pas valide (erreur de format). Remis 0 par la lecture de LSR.
Bit 4 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.
Bit 5 passe 1 lorsqu'une donne est transfre de THR vers le registre dcalage d'mission (THR est alors libre pour le
caractre suivant).
Bit 6 passe 1 lorsque le registre dcalage d'mission est vide.
Bit 7 Toujours 0

Registre IIR : 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)
4
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 dentre
dinterruption contrlables
individuellement

















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 (CS0CS1/CS2 = 110)
- 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.

5
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 DDRA
Port A en entre
Accder au CRA
Accder au ORA
Accder au CRB
Accder au DDRB
Port B en sortie
Accder au CRB
Accder au ORB
6
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 In/Out Signal Description
/STROBE
Out
broche 1
Actif bas. Le PC indique la prsence certaine de donnes valides sur la
ligne ( elles le sont avant ).
/AUTOFEED
Out
broche 14
Actif bas. Indique limprimante dinsrer automatiquement un saut de
ligne en plus du retour chariot chaque return.
/SELECT IN
Out
broche 17
Actif bas. Indique limprimante quelle est slectionne.
Contrle
/INIT
Out
broche 16
Actif bas. Utilis pour envoyer un reset limprimante.
7
/ACK
In
broche 10
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.
BUSY
In
broche 11
Cette ligne est mise 1 par l'imprimante lorsque son buffer de rception
est plein ( contrle de flux matriel ).
Le PC doit attendre que cette ligne revienne 0 pour r-mettre.
PE
In
broche 12
Limprimante indique quil ny a plus de papier ( Paper Error )
SELECT
In
broche 13
Cette ligne indique l'ordinateur si l'imprimante est "on line" ou "off line".

Etat
/ERROR
In
broche 15
Limprimante indique une erreur au PC.
Donnes DATA[8:1]
Out

8 lignes de donnes- seulement en sortie en SPP.
broche 2 = D0, 3 = D1, 4 = D2, 5 = D3, ..., 9 = D7
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 6 5 4 3 2 1 0
D7 = MSB D6 D5 D4 D3 D2 D1 D0 = LSB
Il nest accessible quen criture dans les premiers modes SPP.

Registre dtat en ADR+1 est :
7 6 5 4 3 2 1 0
BUSY /ACK PE SELECT /ERROR Non dfini Non dfini Non dfini
Il nest accessible quen lecture.

Registre de contrle en ADR+2 est :
7 6 5 4 3 2 1 0
Non dfini Non dfini DIR IRQ
ENABLE
SELECT IN /INIT AUTOFEED /STROBE
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 )

C Modes SPP

On distingue 2 modes SPP

Mode Quartet SPP
( Nibble Mode )
A l'origine 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,
...



8
C Principe des changes: Handshake Strobe/Ack

a) Ecriture

Les donnes sont places sur les lignes data.

1. Ecrire les donnes dans le registre de donnes ( => Elles sont sur les fils de sortie )
2. Lire BUSY dans le registre dtat pour vrifier que limprimante nest pas occupe.
3. Ecrire /STROBE = 0 si elle ne lest pas dans le registre de contrle.
4. 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.

C 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 )
9

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


C 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 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Mode ( selon tableau prcdent ) Interruption
ECP
Autorisation
mode DMA
Bit de service
ECP
FIFO
pleine
FIFO
Vide

Mode = 000 pour fonctionnement SPP, 001 pour mode octet, 011 pour ECP, 110 pour mode test,...
10
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.


11
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
Lhte peut rinitialiser un priphrique : Il envoie SEO plus de 2.5s ( normalement 10 ms ! ).
Suspension
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.
Reprise
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.
SOP
( Start of packet )
Pour indiquer le dbut dun paquet
Au passage de ltat de veille ( identique lectriquement J ) ltat K
EOP
( end of packet )
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 ).

12
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

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

Phase du jeton (Token phase) :
Lhte lance le jeton en indiquant le type de la transaction venir.

Phase de transfert de donnes : Les donnes sont mises sous forme de paquets. La direction des
donnes suit celle indique par le jeton transmis auparavant.

Phase de Handshake : 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 ).


C Diffrents transferts possibles

USB traite des flux diffrents => Qualit de service. On dfinit diffrents types dchanges sur le bus:

Types de transfert
Contrle Bulk Interruption Isochrone
Utilisable en bas dbit
Oui Non Oui Non
Intgre une correction derreur
Oui Oui Oui Non
Garantit le dbit
Non Non Non Oui
Garantit le non dpassement dune latence
maximale( dlai de transmission )
Non Non Oui Oui
Application typique
Configuration
dun appareil
Imprimante Souris Son ou image

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

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

13

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.

- 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.
Champ PID :

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

Champ Adresse : 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






14

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:















C 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
( optionnelle )
a) Phase de Jeton
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.


15
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

Paquet de donnes
Hte Priphrique
Donnes Paquet de Handshake ACK

Paquet jeton IN

Paquet donnes

Paquet de Handshake ACK

Paquet Jeton OUT
Etat
Donnes

Paquet de Handshake ACK


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



C 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 ).
16
Lhte envoie un paquet jeton IN pour recevoir des donnes ou OUT pour en mettre. Puis les donnes sont changes.

Jeton OUT
Transfert
Isochrone
OUT
Donnes

Hte Priphrique

Jeton IN
Transfert
Isochrone
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- V
BUS
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.