Académique Documents
Professionnel Documents
Culture Documents
Unités D'entrée/sortie UE
Unités D'entrée/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
* Spcialises:
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
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 !
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
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 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
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 :
IIR est utilis pour les interruptions. Il permet d'identifier la cause de l'interruption mise par l'UART.
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
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
Registres dans lesquels vont transiter les donnes. Pour lire une donne reue par un port, il suffira de lire le contenu de ce
registre.
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
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.
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.
/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
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
6
Non dfini
=> 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 )
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.
=> Beaucoup de contrles via logiciel=> gestion lourde et pnible =>Dbit encore limit => 150 ko/s en SPP.
- 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
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,...
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 :
10
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 )
( Start of packet )
EOP
( end of packet )
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.
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 :
Champ Adresse :
- Paquet SOF
- 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
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 :
Champ CRC :
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 :
=> 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
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