LE BUS PCI 9 ième partie: Les performances Sommaire - Repère
LE BUS PCI 3 ième partie: Les échanges de données Sommaire - Repère
description
Transcript of 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
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
3
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables
L ’espace I/O
Granularité: Octet Espace de 4 Gigaoctets
4
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables
L ’espace Mémoire
Granularité: Mots de 32 bits
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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 # #
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#
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
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
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
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
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
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
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
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
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
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
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
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
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
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#
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
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
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
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
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
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
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)
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
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
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
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)
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
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