![Intel IXP45X Скачать руководство пользователя страница 480](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092480.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—USB 2.0 Host Controller
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Developer’s Manual
August 2006
480
Order Number: 306262-004US
This example shows the first three siTDs for the transaction stream. Since this is the
case-2a frame-wrap case, S-masks of all siTDs for this endpoint have a value of 10h (a
one bit in micro-frame 4) and C-mask value of C3h (one-bits in micro-frames 0,1, 6
and 7). Additionally, software ensures that the Back Pointer field of each siTD
references the appropriate siTD data structure (and the Back Pointer T-bits are set to
zero).
The initial SplitXState of the first siTD is Do Start Split. The host controller will visit
the first siTD eight times during frame X. The C-mask bits in micro-frames 0 and 1 are
ignored because the state is Do Start Split. During micro-frame 4, the host controller
determines that it can run a start-split (and does) and changes SplitXState to Do
Complete Split. During micro-frames 6 and 7, the host controller executes complete-
splits. Notice the siTD for frame X+1 has it's SplitXState initialized to Do Complete
Split. As the host controller continues to traverse the schedule during H-Frame X+1, it
will visit the second siTD eight times. During micro-frames 0 and 1 it will detect that it
must execute complete-splits.
During H-Frame X+1, micro-frame 0, the host controller detects that siTD
X+1
's Back
Pointer.T-bit is a zero, saves the state of siTD
X+1
and fetches siTD
X
. It executes the
complete split transaction using the transaction state of siTD
X
. If the siTD
X
split
transaction is complete, siTD's Active bit is set to zero and results written back to
siTD
X
. The host controller retains the fact that siTD
X
is retired and transitions the
SplitXState in the siTD
X+1
to Do Start Split. At this point, the host controller is
prepared to execute the start-split for siTD
X+1
when it reaches micro-frame 4. If the
split-transaction completes early (transaction-complete is defined in
Isochronous - Do Complete Split” on page 476
), i.e. before all the scheduled complete-
splits have been executed, the host controller will transition siTD
X
.SplitXState to Do
Start Split early and naturally skip the remaining scheduled complete-split
transactions. For this example, siTD
X+1
does not receive a DATA0 response until H-
Frame X+2, micro-frame 1.
During H-Frame X+2, micro-frame 0, the host controller detects that siTD
X+2
's Back
Pointer.T-bit is a zero, saves the state of siTD
X+2
and fetches siTD
X+1
. As described
above, it executes another split transaction, receives an MDATA response, updates the
transfer state, but does not modify the Active bit. The host controller returns to the
context of siTD
X+2
, and traverses it's next pointer without any state change updates to
siTD
X+2
. S
During H-Frame X+2, micro-frame 1, the host controller detects siTD
X+2
's S-mask[0] is
a zero, saves the state of siTD
X+2
and fetches siTD
X+1
. It executes another complete-
split transaction, receives a DATA0 response, updates the transfer state and sets the
Table 184.
Example Case 2a - Software Scheduling siTDs for an IN Endpoint
siTD
X
Micro-Frames
Initial
SplitXState
#
Masks
0
1
2
3
4
5
6
7
X
S-Mask
1
Do Start Split
C-Mask 1
1
1
1
X+1
S-Mask
1
Do Complete Split
C-Mask 1
1
1
1
X+2
S-Mask
1
Do Complete Split
C-Mask 1
1
1
1
X+3
S-Mask
Repeats previous pattern
Do Complete Split
C-Mask