le bus pci 3 ième partie: les échanges de données sommaire - repère

48
1 LE BUS PCI 3 ième partie: Les échanges de données Sommaire - Repère Troisième partie: Les échanges de données Espace adressable Les commandes Les transactions Décodage d ’adresses Transactions en Écriture - Burst Transactions en Écriture - Single Cycle Transactions en Lecture - Burst Transactions en Lecture - Single Cycle Fin de transaction Synthèse Cours_bus_PCI_2_02 1 ière partie: Présentation 2 ième partie: Les signaux 3 ième partie: Les échanges de données 4 ième partie: L ’Arbitrage 5 ième partie: Les transactions particulières 6 ième partie: Les aspects électriques,tim ings 7 ième partie: Bridge PC I/PC I 8 ième partie L ’espace de configuration 9 ième partie Les perform ances

Upload: page

Post on 28-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

LE BUS PCI 3 ième partie: Les échanges de données Sommaire - Repère. Troisième partie: Les échanges de données Espace adressable Les commandes Les transactions Décodage d ’adresses Transactions en Écriture - Burst Transactions en Écriture - Single Cycle Transactions en Lecture - Burst - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

1

LE BUS PCI3ième partie: Les échanges de donnéesSommaire - Repère

Troisième partie: Les échanges de données

Espace adressable

Les commandes

Les transactions

Décodage d ’adresses

Transactions en Écriture - Burst

Transactions en Écriture - Single Cycle

Transactions en Lecture - Burst

Transactions en Lecture - Single Cycle

Fin de transaction

Synthèse

Cours_bus_PCI_2_02

1ière partie: Présentation

2ième partie: Les signaux

3ième partie: Les échanges de données

4ième partie: L ’Arbitrage

5ième partie: Les transactions particulières

6ième partie: Les aspects électriques, timings

7ième partie: Bridge PCI / PCI

8ième partie L ’espace de configuration

9ième partie Les performances

Page 2: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

2

LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables

Le bus PCI supporte 3 espaces adressables:

I/O Essentiellement utilisé pour assurer la compatibilité Ressource limitée, attention aux conflits

Mémoire Meilleures performances que celles de l ’espace I/O Peu de conflits

Configuration Pour "plug and play" Requis pour tous les agents PCI

Page 3: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

3

LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables

L ’espace I/O

Granularité: Octet Espace de 4 Gigaoctets

Page 4: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

4

LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables

L ’espace Mémoire

Granularité: Mots de 32 bits

Page 5: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

5

LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables

L ’espace de configuration Granularité: Octet Chaque agent a un espace de configuration réservé de 256 octets

Décrit les possibilités PCI d ’un composant Permet la configuration par logiciel des interfaces PCI (plug & play)

Adressage par: Numéro de bus Numéro d ’agent Numéro de fonction Numéro de registre

Page 6: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

6

LE BUS PCI3ième partie: Les échanges de donnéesLes commandes

Les différentes opérations sur le bus:

Les accès burst ou transferts par paquet de données

C ’est le mécanisme de base des échanges sur le bus

Avantages:

• Évite de charger le processeur par des accès fractionnés et multiples

• Les processeurs de génération actuelle disposent généralement de ce mode d ’accès

• Meilleure exploitation de la bande passante des (S)DRAM

Inconvénients:

• Le bus est bloqué pendant tout le transfert

• Attention aux interruptions

Phase d ’adressage suivie de une ou plusieurs phases de données

Nécessite, pour les agents émettant et recevant le paquet de disposer d ’une mémoire de taille suffisante

Page 7: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

7

LE BUS PCI3ième partie: Les échanges de donnéesLes commandes

Les commandes de base: Configuration Read, Configuration Write I/O Read, I/O Write Memory Read, Memory Write

Les commandes optimisées Memory Read Line, Memory Read Multiple Memory Write and Invalidate

Autres: Interrupt Acknowledge Special Cycle Dual Address Cycle Reserved

Page 8: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

8

LE BUS PCI3ième partie: Les échanges de donnéesLes commandes

Liste des commandes PCI

C/BE3# C/BE2# C/BE1# C/BE0# Type de commande

0 0 0 0 Interrupt acknowledge

0 0 0 1 Cycle spécial

0 0 1 0 Lecture E/S

0 0 1 1 Ecriture E/S

0 1 0 0 Réservé

0 1 0 1 Réservé

0 1 1 0 Lecture mémoire

0 1 1 1 Ecriture mémoire

1 0 0 0 Réservé

1 0 0 1 Réservé

1 0 1 0 Lecture configuration

1 0 1 1 Ecriture configuration

1 1 0 0 Lecture mémoire multiple

1 1 0 1 Dual address cycle

1 1 1 0 Lecture mémoire en ligne

1 1 1 1 Ecriture mémoire et invalidation

Page 9: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

9

LE BUS PCI3ième partie: Les échanges de donnéesLes transactions

Transaction en Écriture Burst Single Cycle

Transaction en Lecture Burst Single Cycle

État du bus:

FRAME# IRDY# Description

désactivé désactivé Bus inoccupé

désactivé activé Le maître est prêt à réaliser la dernière phase de données

activé désactivé Durant la transaction, le maître n’est pas capable de transférer ladonnée sur ce front d’horloge

activé activé Durant la transaction, le maître est capable de transférer la donnéesur ce front d’horloge

Page 10: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

10

LE BUS PCI3ième partie: Les échanges de donnéesLes transactions

Règles de base

Le signal Ready du composant drivant les données doit être valide quand les données sont transférées sur le bus

L ’agent PCI recevant les données doit laisser son signal Ready invalide tant qu ’il n ’est pas prêt à recevoir des données

Quand un signal Ready d ’un agent est validé, il doit le rester jusqu ’à la fin de la phase de données en cours

Un agent ne peut pas changer l ’état de ses signaux de contrôle après avoir signalé qu ’il était prêt à achever la phase de données en cours

Un initiateur, après avoir validé IRDY#, ne peut changer l ’état de IRDY# ou de FRAME# sans prendre en compte TRDY#

Une cible, après avoir validé TRDY# ou STOP#, ne peut changer TRDY#, STOP# ou DEVSEL# avant la fin de la phase de données en cours

Page 11: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

11

LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (1/4)

1 2 3 4 5

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Fast Decode

Address Phase1 Clock

Page 12: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

12

LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (2/4)

1 2 3 4 5

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Medium Decode

2 ClocksAddress Phase

Page 13: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

13

LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (3/4)

1 2 3 4 5

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Slow Decode

3 Clocks

6

Address Phase

Page 14: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

14

LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (4/4)

1 2 3 4 5

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Subtractive Decode

4 Clocks

6 7

Address Phase

Une méthode de décodage d ’adresses pour lequel un agent accepte toutes les transactions non spécifiquementdécodées par un autre agent.

Page 15: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

15

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (1/7)

Master Target

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1 data2 data3

bus cmd be 1 be 2 be 3

Page 16: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

16

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (2/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data1 data2 data3

bus cmd be 1 be 2 be 3

Address Phase

Page 17: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

17

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (3/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data1 data2 data3

bus cmd be 1 be 2 be 3

Data Phase 1

Page 18: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

18

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (4/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data1 data2 data3

bus cmd be 1 be 2 be 3

Data Phase 2

Page 19: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

19

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (5/7)

1 2 3 4

CLK

Master Target

5 6 7 8 9

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1 data2 data3

bus cmd be 1 be 2 be 3

Data Phase 3

Page 20: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

20

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (6/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data1 data2 data3

bus cmd be 1 be 2 be 3

Turn Around CycleFRAME , AD and C/BE # #

Page 21: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

21

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (7/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data1 data2 data3

bus cmd be 1 be 2 be 3

Turn Around CycleIRDY#, TRDY# and DEVSEL#

Page 22: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

22

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (1/3)

1 2 3 4

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Target

address data1

bus cmd be 1

Master Address Phase

Page 23: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

23

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (2/3)

1 2 3 4

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Target

address data1

bus cmd be 1

Master Data Phase

Page 24: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

24

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (3/3)

Turn Around

1 2 3 4

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Target

address data1

bus cmd be 1

Master

Page 25: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

25

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (1/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Page 26: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

26

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (2/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Address Phase

Page 27: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

27

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (3/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Turn Around

Page 28: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

28

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (4/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Data Phase 1

Page 29: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

29

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (5/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Data Phase 2

Page 30: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

30

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (6/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Data Phase 3

Page 31: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

31

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (7/7)

1 2 3 4 5 6 7 8 9

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

Master Target

address data3data1 data2

bus cmd be 1 be 3be 2

Turn Around

Page 32: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

32

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (1/3)

Master Target

1 2 3 4 5

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Page 33: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

33

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (2/3)

1 2 3 4

Address Phase

CLK

Target

5

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Master

Page 34: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

34

LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (3/3)

CLK

Target

5

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

Master

1 2 3 4

Data Phase

Page 35: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

35

LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction

Initialisée par le Maître

Fin normale Le Maître a transféré toutes les données correctement

Timeout Le Maître a encore des données à transférer, mais le laps de temps accordé est terminé:

Son « Latency Timer » est à « 0 » et un autre Maître demande le bus.

Master Abort Aucune cible (target) n ’a décodé le bus: DEVSEL# reste inactif (6 cycles d ’horloge après

le passage à l ’état actif de FRAME#) Correspond à une situation anormale

Dans tous les cas, le Maître désactive FRAME#

Page 36: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

36

LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction

Initialisée par la Cible Target Retry: La Cible n’est pas prête à accepter des données au moment voulu par le Maître

1 2 3 4 5 6

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

STOP#

Retry - STOP# asserted and TRDY# deasserted during first data phase

Page 37: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

37

LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction

Initialisée par la Cible Disconnect with data: La Cible est prête à accepter des données, mais pas toutes

1 2 3 4 5 6 7

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1 data2 data3

bus cmd be 1 be 2 be 3

STOP#

Disconnect with data: STOP# and TRDY# asserted during subsequent data phase

Target's buffer will be full when data 2 completesTarget signals it is ready to accept data 2 and requests the transaction to stopData 3 does not transfer on clock 54

Page 38: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

38

LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction

Initialisée par la Cible Disconnect without data: La Cible est prête à transférer des données, mais pas toutes

1 2 3 4 5 6 7

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1 data2 data3

bus cmd be 1 be 2 be 3

STOP#

Disconnect without data: STOP# asserted and TRDY#deasserted during subsequent data phase

Target's buffer is full when data 2 completesTarget signals its buffers are full and requests the transaction to stopData 3 does not transfer

Page 39: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

39

LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction

Initialisée par la Cible Target Abort: La Cible n’est jamais capable de finir la transaction en cours

Correspond à une situation anormale

1 2 3 4 5 6

CLK

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#

address data1

bus cmd be 1

STOP#

Target abort: STOP# asserted and DEVSEL# deasserted

Page 40: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

40

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Phase d ’adressage

CLK

FRAME*

AD[31:0]

IRDY*

TRDY*

DEVSEL*

GNT*

1 2 3 4 5 6 7 8

Initiator asserts FRAME*to start transaction

Initiator drives stablepattern onto AD bus andPAR for parity checking

Initiator drives messageonto AD bus, asserts byteenables and asserts IRDY*

to indicate presence ofmessage

Target do not respondto transaction. TRDY* and

DEVSEL* remain deasserted

Initiator deasserts IRDY*,returning PCI bus to idle state

Message is only presenton the AD bus for one clock after

IRDY* asserted

Initiator samples DEVSEL*4 times to see if transaction

is claimed and then times outand terminates transaction

C/BE*[3:0]

Initiator deasserts FRAME*indicating it's readyto complete

last data phase

Initiator drives specialcycle commandonto C/BE* bus

Page 41: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

41

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI

On considère que le maître a déjà obtenu la main sur le bus et que la phase d ’arbitrage est terminée.

Le maître doit maintenant attendre que le bus soit inoccupé (« idle state ») en échantillonnant les signaux FRAME# et IRDY#. Quand ces 2 derniers sont inactifs (front de CLK), le bus est inoccupé et la transaction peut commencer.

Au début de la transaction, l ’initiateur active FRAME#, indiquant ainsi que la transaction a commencé et qu ’une adresse de départ ainsi qu ’une commande sont disponibles pendant la 1ière période de CLK. Le signal FRAME# doit rester valide jusqu ’à ce que l ’initiateur soit prêt à compléter la dernière phase de données.

Un cycle « mort » (turn around cycle) est nécessaire durant la 1ière période de CLK pour permettre d ’éviter des contentions sur les signaux IRDY#, TRDY#, DEVSEL#.

Au début de la 2ième période de CLK, l ’initiateur peut placer des données sur le bus AD sans insertion d ’un cycle « mort ». Il indique aussi, par C/BE#,quels sont les octets à transférer et leur destination. Il valide IRDY# pour indiquer que des données valides sont présentes sur le bus. Il peut retarder cette dernière validation pour des raisons internes à son fonctionnement (buffers vides par exemple). Ce retard ne doit pas durer plus de 8 cycles. Pendant cette même période d ’horloge, la cible valide TRDY# et DEVSEL# après avoir décodé l ’adresse et les commandes C/BE#.

Quand la cible et l ’initiateur échantillonnent, au 3ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 1ière donnée est prise en compte par la cible et la 1ière phase de données est considérée comme terminée.

Écriture PCI avec temps d ’attente

Page 42: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

42

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI

A ce moment, l ’initiateur présente la 2ième donnée sur le bus AD et indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données. Dans les transactions de données multiples, c ’est à la cible que revient la gestion de l ’incrémentation d ’adresses à partir de l ’adresse de départ fournie par l ’initiateur. La cible peut implémenter des mécanisme de conversion little endian / big endian. Il est conseillé de rendre cette conversion programmable par l ’utilisation de l ’espace de configuration.

Quand la cible et l ’initiateur échantillonne, au 4ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 2ième donnée est prise en compte par la cible et la 2ière phase de données est considérée comme terminée.

Dans l ’exemple de la figure, l ’initiateur va devoir faire attendre la cible avant de présenter la prochaine donnée. Ce temps d ’attente est généré en dévalidant IRDY# pendant la 4ième période de CLK. Pendant cette période, l ’initiateur doit éviter de laisser flotter le bus AD, mais il doit cependant indiquer par C/BE# quels sont les octets à transférés et leur destination pour la prochaine phase de données. La cible, nécessitant elle aussi plus de temps avant d ’être prête à accepter la 3ième donnée, dévalide TRDY#.

Au début de la 5ième période de CLK, l ’initiateur place des données sur le bus AD et indique, en validant IRDY#, que les données valides sont présentes sur le bus. En dévalidant FRAME#, il indique que la phase en cours est la dernière phase de données. Cependant, TRDY# est toujours non valide (cible non prête) de la 5ième à la 7ième période de CLK.

Quand la cible et l ’initiateur échantillonne, au 8ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 3ième donnée est prise en compte par la cible et la 3ième phase de données est considérée comme terminée.

La cible dévalide TRDY# et DEVSEL# et l ’initiateur dévalide IRDY#, ce qui provoque un retour du bus en « idle state ».

Écriture PCI avec temps d ’attente (suite)

Page 43: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

43

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI

Écriture PCI avectemps d ’attenteCLK

FRAME*

AD[31:0]

IRDY*

TRDY*

DEVSEL*

GNT*

1 2 3 4 5 6 7 8

Transaction starts:FRAME* asserted, address

driving onto AD bus andcommand onto C/BE* bus

Initiator drives write dataonto AD bus and asserts IRDY*

Wait states inserted by target

Initiator deasserts IRDY*,returning to idle state

C/BE*[3:0]

Initiator desserts FRAME*, indicatingthat it's ready to complete last data phase

D1 Data 2 Data 3Ad.

Buscom

Byteenables

Byteenables

9

Byte enables can changewith each data phase

Data transfers

Targets sampleaddress and command. Ondecode, DEVSEL* asserted

Byteenables

Wait states inserted by initiator and target

Page 44: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

44

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI

CLK

FRAME*

AD[31:0]

IRDY*

TRDY*

DEVSEL*

GNT*

1 2 3 4 5 6

Transaction starts:FRAME* asserted, address

driving onto AD bus andcommand onto C/BE* bus

Initiator drives write dataonto AD bus and asserts IRDY*

Initiator deasserts IRDY*,returning to idle state

C/BE*[3:0]

Initiator deasserts FRAME*, indicatingthat it's ready to complete last data phase

D1 D2 D3Ad.

Buscom

Byteenables

Byteenables

Byte enables can changewith each data phase

Data transfers

Targets sampleaddress and command. Ondecode, DEVSEL* asserted

Byteenables

Écriture PCI optimisée

Page 45: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

45

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI

On considère que le maître a déjà obtenu la main sur le bus et que la phase d ’arbitrage est terminée.

Le maître doit maintenant attendre que le bus soit inoccupé (« idle state ») en échantillonnant les signaux FRAME# et IRDY#. Quand ces 2 derniers sont inactifs (front de CLK), le bus est inoccupé et la transaction peut commencer.

Au début de la transaction, l ’initiateur active FRAME#, indiquant ainsi que la transaction a commencé et qu ’une adresse de départ ainsi qu ’une commande sont disponibles pendant la 1ière période de CLK. Le signal FRAME# doit rester valide jusqu ’à ce que l ’initiateur soit prêt à compléter la dernière phase de données.

Un cycle « mort » (turn around cycle) est nécessaire durant la 1ière période de CLK pour permettre d ’éviter des contentions sur les signaux IRDY#, TRDY#, DEVSEL#.

Au début de la 2ième période de CLK, l ’initiateur cesse de driver le bus AD, pour que la cible puisse placer des données sur le bus. Pour permettre l ’insertion d ’un cycle « mort » sur ce bus, la cible doit laisser TRDY# invalide pendant cette période. L ’initiateur indique aussi par C/BE# quels sont les octets à transférer et leur destination. Il valide IRDY# pour indiquer qu ’il est prêt à recevoir des données. Il peut retarder cette dernière validation pour des raisons internes à son fonctionnement (buffers pleins par exemple). Ce retard ne doit pas durer plus de 8 cycles.

Pendant la 3ième période de CLK, la cible:

valide DEVSEL# pour indiquer qu ’il a reconnu son adresse et qu ’il va participer à la transaction

commence à driver les données sur le bus AD et valide TRDY# pour indiquer à l ’initiateur la présence de données valides.

Lecture PCI avec temps d ’attente

Page 46: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

46

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI

Quand le cible et l ’initiateur échantillonnent, au 4ième front de CLK, l ’état valide de IRDY# et de TRDY#, la 1ière donnée est lue par l ’initiateur et la 1ière phase de données est considérée comme terminée.

L ’initiateur indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données.

Dans les transactions de données multiples, c ’est à la cible que revient la gestion de l ’incrémentation d ’adresses à partir de l ’adresse de départ fournie par l ’initiateur. La cible peut implémenter des mécanismes de conversion little endian / big endian. Il est conseillé de rendre cette conversion programmable par l ’utilisation de l ’espace de configuration.

Dans l ’exemple de la figure, la cible va devoir faire attendre l ’initiateur avant de charger la prochaine donnée. Ce temps d ’attente est généré en dévalidant TRDY# pendant la 5ième période de CLK. Pendant cette période, la cible doit éviter de laisser flotter le bus AD. Pendant ce temps d ’attente, la cible présente la 2ième donnée sur le bus AD. Elle est prise en compte lorsque la cible valide TRDY# sur le 6ième front de CLK. La 2ième phase de données est considérée comme terminée.

Au début de la 3ième phase de données, l ’initiateur indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données. Dans l ’exemple, il dévalide IRDY# pour introduire un temps d ’attente durant la 6ième période de CLK. Pendant ce temps, la cible doit continuer à présenter, sur le bus AD, la donnée demandée.

Pendant la 7ième période de CLK, l ’initiateur valide IRDY# pour accepter, sur le prochain front de CLK, la donnée et dévalide FRAME# pour avertir la cible que cette phase de données est la dernière. La 3ième phase de données est alors considérée comme terminée.

La cible dévalide TRDY# et DEVSEL# et l ’initiateur dévalide IRDY#, ce qui provoque le retour à l ’état « iddle » du bus.

Lecture PCI avec temps d ’attente (suite)

Page 47: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

47

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI

CLK

FRAME*

AD[31:0]

IRDY*

TRDY*

DEVSEL*

GNT*

1 2 3 4 5 6 7 8

Initiator starts transactionby asserting FRAME*,

driving address onto AD busand command onto C/BE* bus

Turn around cycle.Initiator stops driving AD bus

Target keeps TRDY* deasserted toenforce turn-around cycle

Wait states

Target begins to drive databack to initiator

Initiator deasserts IRDY*,returning to idle state

C/BE*[3:0]

Initiator desserts FRAME*, indicatingthat it's ready to complete last data phase

Data 1 D2 Data 3Ad.

Buscom

Byteenables

Byteenables

Byteenables

9

Initiator stops driving commandand starts drving byte enables

Target device asserts DEVSEL*

Target deasserts TRDY*and DEVSEL*

Data transfers

Target latch and decodeaddress and command.

1 target asserts DEVSEL*

Lecture PCI avectemps d ’attente

Page 48: LE BUS PCI 3 ième  partie: Les échanges de données Sommaire - Repère

48

LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI

CLK

FRAME*

AD[31:0]

IRDY*

TRDY*

DEVSEL*

GNT*

1 2 3 4 5 6 7

Initiator starts transactionby asserting FRAME*,

driving address onto AD busand command onto C/BE* bus

Turn around cycle.Initiator stops driving AD bus

Target keeps TRDY* deasserted toenforce turn-around cycle

Target begins to drive databack to initiator

Initiator deasserts IRDY*,returning to idle state

C/BE*[3:0]

Initiator desserts FRAME*, indicatingthat it's ready to complete last data phase

Target latch and decodeaddress and command.

1 target asserts DEVSEL* D1 D2 D3Ad.

Buscom

Byteenables

Byteenables

Byteenables

Initiator stops driving commandand starts drving byte enables

Target device asserts DEVSEL*

Target deasserts TRDY*and DEVSEL*

Data transfers

Lecture PCI optimisée