throbber
Universal Serial Bus Specification Revision 2.0
`
`G (LSb)
`I
`D0 I D1
`
`Byte N-1
`
`D2 I D3 I D4
`
`Byte N
`
`Byte N+1
`
`(MSb)
`
`(LSb)
`
`Ds I D5 I D1 IG
`
`Data packet size varies with the transfer type, as described in Chapter 5.
`
`Figure 8-4. Data Field Format
`
`8.3.5 Cyclic Redundancy Checks
`Cyclic redundancy checks (CRCs) are used to protect all non-PID fields in token and data packets. In this
`context, these fields are considered to be protected fields. The PID is not included in the CRC check of a
`packet containing a CRC. All CRCs are generated over their respective fields in the transmitter before bit
`stuffing is performed. Similarly, CRCs are decoded in the receiver after stuffed bits have been removed.
`Token and data packet CRCs provide 100% coverage for all single- and double-bit errors. A failed CRC is
`considered to indicate that one or more of the protected fields is corrupted and causes the receiver to ignore
`those fields and, in most cases, the entire packet.
`
`For CRC generation and checking, the shift registers in the generator and checker are seeded with an all(cid:173)
`ones pattern. For each data bit sent or received, the high order bit of the current remainder is XORed with
`the data bit and then the remainder is shifted left one bit and the low-order bit set to zero. If the result of
`that XOR is one, then the remainder is XORed with the generator polynomial.
`
`When the last bit of the checked field is sent, the CRC in the generator is inverted and sent to the checker
`MSb first. When the last bit of the CRC is received by the checker and no errors have occurred, the
`remainder will be equal to the polynomial residual.
`
`A CRC error exists if the computed checksum remainder al the end of a packet reception does nol match the
`residual.
`
`Bit stuffing requirements must be met for the CRC, and this includes the need to insert a zero at the end of a
`CRC if the preceding six bits were all ones.
`
`8.3.5.1 Token CRCs
`A five-bit CRC field is provided for tokens and covers the ADDR and ENDP fields of IN, SETUP, and
`OUT tokens or the time stamp field of an SOF token. The PING and SPLIT special tokens also include a
`five-bit CRC field. The generator polynomial is:
`
`G(X) = XS+ X' + 1
`
`The binary bit pattern that represents this polynomial is 00101B. If all token bits are received without error,
`the five-bit residual at the receiver will be O 11 OOB.
`
`8.3.5.2 Data CRCs
`The data CRC is a 16-bit polynomial applied over the data field of a data packet. The generating
`polynomial is:
`
`G(X) =X1'+ X 1s+ X' + 1
`
`The binary bit pattern that represents this polynomial is 1000000000000101 B. If all data and CRC bits are
`received without error, the 16-bit residual will be 100000000000110 IB.
`
`198
`
`PA_0001408
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`8.4 Packet Formats
`
`This section shows packet formats for token, data, and handshake packets. Fields within a packet are
`displayed in these figures in the order in which bits are shifted out onto the bus.
`8.4.1 Token Packets
`
`Figure 8-5 shows the field formats for a token packet. A token consists of a PID, specifying either IN,
`OUT, or SETUP packet type and ADDR and ENDP fields. The PING special token packet also has the
`same fields as a token packet. For OUT and SETUP transactions, the address and endpoint fields uniquely
`identify the endpoint that will receive the subsequent Data packet. For IN transactions, these fields uniquely
`identify which endpoint should transmit a Data packet. For PING transactions, these fields uniquely
`identify which endpoint will respond with a handshake packet. Only the host can issue token packets. An
`IN PID defines a Data transaction from a function to the host. OUT and SETUP PIDs define Data
`transactions from the host to a function. A PING PID defines a handshake transaction from the function to
`the host.
`
`(lsb)
`
`(msb)
`
`Field
`
`PIO
`
`ADDR
`
`ENDP
`
`CRC5
`
`Bits
`
`8
`
`7
`
`4
`
`\
`
`f
`
`5
`
`J
`
`Figure 8-5. Token Format
`
`Token packets have a five-bit CRC that covers the address and endpoint fields as shown above. The CRC
`does not cover the PID, which has its own check field. Token and SOF packets are delimited by an EOP
`after three bytes of packet field data. If a packet decodes as an otherwise valid token or SOF but does not
`terminate with an EOP after three bytes, it must be considered invalid and ignored by the receiver.
`
`8.4.2 Split Transaction Special Token Packets
`USB defines a special token for split transactions: SPLIT. This is a 4 byte token packet compared to other
`nonnal 3 byte token packets. The split transaction token packet provides additional transaction types with
`additional transaction specific information. The split transaction token is used to support split transactions
`between the host controller communicating with a hub operating at high speed with full-/low-speed devices
`to some of its downstream facing ports. There are two split transactions defined that use the SPLIT special
`token: a start-split transaction (SSPLIT) and a complete-split transaction (CSPLIT). A field in the SPLIT
`special token, described in the following sections, indicates the specific split transaction.
`
`8.4.2.1 Split Transactions
`A high-speed split transaction is used only between the host controller and a hub when the hub has full(cid:173)
`/low-speed devices attached to it. This high-speed split transaction is used to initiate a full-/low-speed
`transaction via the hub and some full-/low-speed device endpoint. The high-speed split transaction also
`allows the completion status of the full-/low-speed transaction to be retrieved from the hub. This approach
`allows the host controller to start a full-/low-speed transaction via a high-speed transaction and then
`continue with other high-speed transactions without having to wait for the full-/low-speed transaction to
`proceed/complete at the slower speed. See Chapter 11 for more details about the state machines and
`transaction definitions of split transactions.
`
`A high-speed split transaction has two parts: a start-split and a complete-split. Split transactions are only
`defined to be used between the host controller and a hub. No other high-speed or full-/low-speed devices
`ever use split transactions.
`
`199
`
`PA_0001409
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Figure 8-6 shows the packets composing a generic start-split transaction. There are two packets in the token
`phase: the SPLIT special token and a full-/low-speed token. Depending on the direction of data transfer and
`whether a handshake is defined for the transaction type, the token phase is optionally followed by a data
`packet and a handshake packet. Start split transactions can consist of 2, 3, or 4 packets as determined by the
`specific transfer type and data direction.
`
`SSPLIT
`Token
`
`FS/LS Token
`
`1
`I
`I DATAx j
`( _________ _
`
`,---------
`!_Handshake
`
`Token Phase
`Figure 8-6. Packets in a Start-split Transaction
`
`Figure 8-7 shows the packets composing a generic complete-split transaction. There are two packets in the
`token phase: the SPLIT special token and a full-/low-speed token. A data or handshake packet follows the
`token phase packets in the complete-split depending on the data transfer direction and specific transaction
`type. Complete split transactions can consist of 2 or 3 packets as determined by the specific transfer type
`and data direction.
`
`CSPLIT
`Token
`
`FS/LS Token
`
`f l._ D ___ A_T_Ax·-----
`or
`r--------------1
`I Handshake I
`
`Token Phase
`Figure 8-7. Packets in a Complete-split Transaction
`
`L_ _ ______
`
`_
`
`The results of a split transaction are returned by a complete-split transaction. Figure 8-8 shows this
`conceptual "conversion" for an example interrupt IN transfer type. The host issues a start-split (indicated
`with 1) to the hub and then can proceed with other high-speed transactions. The start-split causes the hub to
`issue a full-/low-speed IN token sometime later (indicated by 2). The device responds to the IN token (in
`this example) with a data packet and the hub responds with a handshake to the device. Finally, the host
`sometime later issues a complete-split (indicated by 3) to retrieve the data provided by the device. Note that
`in the example, the hub provided the full-/low-speed handshake (ACK in this example) to the device
`endpoint before the complete-split, and the complete-split did not provide a high-speed handshake to the
`hub.
`
`200
`
`PA_0001410
`
`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`(LSb)
`
`I Port 01 Port 11 Port 2 1 Port 3 1 Port 4 1 Port 5 1 Port 6 1
`
`(MSb)
`
`The S (Speed) field specifies the speed for this inten-upt or control transaction as follows:
`
`Figure 8-11. Port Field
`
`•
`
`•
`
`0 - Full speed
`
`1 - Low speed
`
`For bulk IN/OUT and isochronous IN start-splits, the S field must be set to zero. For bulk/control IN/OUT,
`inten-upt IN/OUT, and isochronous IN start-splits, the E field must be set to zero.
`
`For full-speed isochronous OUT start-splits, the S' (Start) and E (End) fields specify how the high-speed
`data payload con-esponds to data for a full-speed data packet as shown in Table 8-2.
`
`Table 8-2. Isochronous OUT Payload Continuation Encoding
`
`s
`
`E High-speed to Full-speed Data Relation
`
`0
`
`0
`
`High-speed data is the middle of the full-
`speed data payload
`
`0
`
`1 High-speed data is the end of the full-speed
`data payload
`
`1
`
`0
`
`High-speed data is the beginning of the full-
`speed data payload
`
`1
`
`1 High-speed data is all of the full-speed data
`payload.
`
`Isochronous OUT start-split transactions use these encodings to allow the hub to detect various en-or cases
`due to lack ofreceiving stmi-split transactions for an endpoint with a data payload that requires multiple
`start-splits. For example, a large full-speed data payload may require three start-split transactions: a start(cid:173)
`split/beginning, a start-split/middle and a start-split/end. If any of these transactions is not received by the
`hub, it will either ignore the full-speed transaction (if the start-split/beginning is not received), or it will
`force an en-or for the con-esponding full-speed transaction (if one of the other two transactions are not
`received). Other en-or conditions can be detected by not receiving a start-split during a microframe.
`
`The ET (Endpoint Type) field specifies the endpoint type of the full-/low-speed transaction as shown in
`Table 8-3.
`
`' The S bit can be reused for these encodings since isochronous transactions must not be low speed.
`
`203
`
`PA_0001413
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Table 8-3. Endpoint Type Values in Split Special Token
`
`ET value
`(msb:lsb)
`
`Endpoint
`Type
`
`00
`
`01
`
`10
`
`11
`
`Control
`
`Isochronous
`
`Bulk
`
`Interrupt
`
`This field tells the hub which split transaction state machine to use for this full-/low-speed transaction.
`
`The full-/low-speed device address and endpoint number information is contained in the normal token
`packet that follows the SPLIT special token packet.
`
`8.4.2.3 Complete-Split Transaction Token
`(lsb)
`
`(msb)
`
`Field SPLIT Hub
`PID Addr
`8
`7
`
`Bits
`
`SC Port s u ET
`
`CRC5
`
`1
`
`7
`
`1 1 2
`
`5
`
`Figure 8-12. Complete-split (CSPLIT) Transaction Token
`
`A SPLIT special token packet with the SC field set to one indicates that this is a complete-split transaction
`(CSPLIT).
`
`The U bit is reserved/unused and must be reset to zero(OB).
`
`The other fields of the complete-split token packet have the same definitions as for the start-split token
`packet.
`
`8.4.3 Start-of-Frame Packets
`Start-of-Frame (SOF) packets are issued by the host at a nominal rate of once every 1.00 ms ±0.0005 ms for
`a full-speed bus and 125 µs ±0.0625 µs for a high-speed bus. SOF packets consist of a PID indicating
`packet type followed by an 11-bit frame number field as illustrated in Figure 8-13.
`
`(lsb)
`
`Field
`
`PIO
`
`Bits
`
`8
`
`(msb)
`
`CRC5
`
`5
`
`11
`
`FrameNumber
`
`\...._ ______ }
`f
`
`Figure 8-13. SOF Packet
`
`The SOF token comprises the Loken-only transaction that distributes an SOF marker and accompanying
`frame number at precisely timed intervals corresponding to the start of each frame. All high-speed and full(cid:173)
`speed functions, including hubs, receive the SOF packet. The SOF token does not cause any receiving
`function to generate a return packet; therefore, SOF delivery to any given function cannot be guaranteed.
`
`204
`
`PA_0001414
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`The SOP packet delivers two pieces of timing information. A function is informed that an SOP has
`occurred when it detects the SOP PID. Frame timing sensitive functions, that do not need to keep track of
`frame number (e.g., a full-speed operating hub), need only decode the SOF PID; they can ignore the frame
`number and its CRC. If a function needs to track frame number, it must comprehend both the PID and the
`time stamp. Full-speed devices that have no particular need for bus timing information may ignore the SOP
`packet.
`
`8.4.3.1 USB Frames and Microframes
`USB defines a full-speed 1 ms frame time indicated by a Start Of Frame (SOF) packet each and every lms
`period with defined jitter tolerances. USB also defines a high-speed microframe with a 125 µs frame time
`with related jitter tolerances (See Chapter 7). SOP packets are generated (by the host controller or hub
`transaction translator) every lms for full-speed links. SOP packets are also generated after the next seven
`125 µs periods for high-speed links.
`
`Figure 8-14 shows the relationship between microframes and frames.
`
`Full I low-Speed Frame Size (1 ms)
`1 ms
`1 ms
`
`- -'--i Full-Speed USB Frame
`
`•••
`
`icks ~ Full-Sp ed Isochronous Data Payload
`
`High-Speed Micro-Fra s {125 us)
`
`1111111111111111 111111111111111 1111 ...
`U USB 2.0 Micro-Frame Ticks ~ .
`I High-Speed Isochronous Data Payload
`I (1/Sth Full-Speed Frame)
`
`Figure 8-14. Relationship between Frames and Microframes
`
`High-speed devices see an SOP packet with the same frame number eight times (every 125 µs) during each
`1 ms period. If desired, a high-speed device can locally dete1mine a particular microframe "number" by
`detecting the SOP that had a different frame number than the previous SOP and treating that as the zeroth
`microframe. The next seven SOFs with the same frame number can be treated as microframes 1 through 7.
`
`205
`
`PA_0001415
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`8.4.4 Data Packets
`A data packet consists of a PID, a data field containing zero or more bytes of data, and a CRC as shown in
`Figure 8-15. There are four types of data packets, identified by differing PIDs: DAT AO, DATAl, DATA2
`and MDATA. Two data packet PIDs (DATAO and DATAl) are defined to support data toggle
`synchronization (refer to Section 8.6). All four data PIDs are used in data PID sequencing for high
`bandwidth high-speed isochronous endpoints (refer to Section 5.9). Three data PIDs (MDATA, DAT AO,
`DATAl) are used in split transactions (refer to Sections 11.17-11.21).
`
`(lsb)
`
`Field
`
`PIO
`
`Bits
`
`8
`
`(msb)
`
`CRC16
`
`16
`
`DATA
`
`0-8192
`
`\...._ _______ }
`f
`
`Figure 8-15. Data Packet Format
`
`Data must always be sent in integral numbers of bytes. The data CRC is computed over only the data field
`in the packet and does not include the PID, which has its own check field.
`
`The maximum data payload size allowed for low-speed devices is 8 bytes. The maximum data payload size
`for full-speed devices is 1023. The maximum data payload size for high-speed devices is 1024 bytes.
`
`8.4.5 Handshake Packets
`Handshake packets, as shown in Figure 8-16, consist of only a PID. Handshake packets are used to report
`the status of a data transaction and can return values indicating successful reception of data, command
`acceptance or rejection, flow control, and halt conditions. Only transaction types that support flow control
`can return handshakes. Handshakes are always returned in the handshake phase of a transaction and may be
`returned, instead of data, in the data phase. Handshake packets are delimited by an EOP after one byte of
`packet field. If a packet decodes as an otherwise valid handshake but does not terminate with an EOP after
`one byte, it must be considered invalid and ignored by the receiver.
`
`(lsb) (msb)
`
`Field
`
`PIO
`
`Bits
`
`8
`
`There are four types of handshake packets and one special handshake packet:
`
`Figure 8-16. Handshake Packet
`
`• ACK indicates that the data packet was received without bit stuff or CRC errors over the data field and
`that the data PID was received correctly. ACK may be issued either when sequence bits match and the
`receiver can accept data or when sequence bits mismatch and the sender and receiver must
`resynchronize to each other (refer to Section 8.6 for details). An ACK handshake is applicable only in
`transactions in which data has been transmitted and where a handshake is expected. ACK can be
`returned by the host for IN transactions and by a function for OUT, SETUP, or PING transactions.
`
`• NAK indicates that a function was unable to accept data from the host (OUT) or that a function has no
`data to transmit to the host (IN). NAK can only be returned by functions in the data phase of IN
`transactions or the handshake phase of OUT or PING transactions. The host can never issue NAK.
`
`206
`
`PA_0001416
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`NAK is used for flow control purposes to indicate that a function is temporarily unable to transmit or
`receive data, but will eventually be able to do so without need of host intervention.
`
`•
`
`STALL is returned by a function in response to an IN token or after the data phase of an OUT or in
`response to a PING transaction (see Figure 8-30 and Figure 8-38). STALL indicates that a function is
`unable to transmit or receive data, or that a control pipe request is not supported. The state of a
`function after returning a STALL (for any endpoint except the default endpoint) is undefined. The host
`is not permitted to return a STALL under any condition.
`
`The STALL handshake is used by a device in one of two distinct occasions. The first case, known as
`"functional stall," is when the Halt feature associated with the endpoint is set. (The Halt feature is
`specified in Chapter 9 of this document.) A special case of the functional stall is the "commanded
`stall." Commanded stall occurs when the host explicitly sets the endpoint's Halt feature, as detailed in
`Chapter 9. Once a function's endpoint is halted, the function must continue returning STALL until the
`condition causing the halt has been cleared through host intervention.
`
`The second case, known as "protocol stall," is detailed in Section 8.5.3. Protocol stall is unique to
`control pipes. Protocol stall differs from functional stall in meaning and duration. A protocol ST ALL
`is returned during the Data or Status stage of a control transfer, and the ST ALL condition terminates at
`the beginning of the next control transfer (Setup). The remainder of this section refers to the general
`case of a functional stall.
`
`• NYET is a high-speed only handshake that is returned in two circumstances. It is returned by a high(cid:173)
`speed endpoint as part of the PING protocol described later in this chapter. NYET may also be
`returned by a hub in response to a split-transaction when the full-/low-speed transaction has not yet
`been completed or the hub is otherwise not able to handle the split-transaction. See Chapter 11 for
`more details.
`
`• ERR is a high-speed only handshake that is returned to allow a high-speed hub to report an error on a
`full-/low-speed bus. It is only returned by a high-speed hub as part of the split transaction protocol.
`See Chapter 11 for more details.
`
`8.4.6 Handshake Responses
`Transmitting and receiving functions must return handshakes based upon an order of precedence detailed in
`Table 8-4 through Table 8-6. Not all handshakes are allowed, depending on the transaction type and
`whether the handshake is being issued by a function or the host. Note that if an error occurs during the
`transmission of the token to the function, the function will not respond with any packets until the next token
`is received and successfully decoded.
`
`8.4.6.1 Function Response to IN Transactions
`Table 8-4 shows the possible responses a function may make in response to an IN token. If the function is
`unable to send data, due to a halt or a flow control condition, it issues a STALL or NAK handshake,
`respectively. If the function is able to issue data, it does so. If the received token is corrupted, the function
`returns no response.
`
`207
`
`PA_0001417
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Table 8-4. Function Responses to IN Transactions
`
`Token Received
`Corrupted
`
`Function Tx
`Endpoint Halt
`Feature
`
`Function Can
`Transmit Data
`
`Action Taken
`
`Yes
`
`No
`
`No
`
`No
`
`Don't care
`
`Don't care
`
`Return no response
`
`Set
`
`Not set
`
`Not set
`
`Don't care
`
`Issue STALL handshake
`
`No
`
`Yes
`
`Issue NAK handshake
`
`Issue data packet
`
`8.4.6.2 Host Response to IN Transactions
`Table 8-5 shows the host response to an IN transaction. The host is able to return only one type of
`handshake: ACK. If the host receives a corrupted data packet, it discards the data and issues no response.
`If the host cannot accept data from a function, (due to problems such as internal buffer overrun) this
`condition is considered to be an error and the host returns no response. If the host is able to accept data and
`the data packet is received error-free, the host accepts the data and issues an ACK handshake.
`
`Table 8-5. Host Responses to IN Transactions
`
`Data Packet
`Corrupted
`
`Host Can
`Accept Data
`
`Handshake Returned by Host
`
`Yes
`
`No
`
`No
`
`N/A
`
`No
`
`Yes
`
`Discard data, return no response
`
`Discard data, return no response
`
`Accept data, issue ACK
`
`8.4.6.3 Function Response to an OUT Transaction
`Handshake responses for an OUT transaction are shown in Table 8-6. Assuming successful token decode, a
`function, upon receiving a data packet, may return any one of the three handshake types. If the data packet
`was corrupted, the function returns no handshake. If the data packet was received error-free and the
`function's receiving endpoint is halted, the function returns STALL. If the transaction is maintaining
`sequence bit synchronization and a mismatch is detected (refer to Section 8.6 for details), then the function
`returns ACK and discards the data. If the function can accept the data and has received the data error-free,
`it returns ACK. If the function cannot accept the data packet due to flow control reasons, it returns NAK.
`
`208
`
`PA_0001418
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Table 8-6. Function Responses to OUT Transactions in Order of Precedence
`
`Data Packet Receiver
`Corrupted
`Halt
`Feature
`
`Sequence Bits Function Can
`Match
`Accept Data
`
`Handshake Returned
`by Function
`
`Yes
`
`No
`
`No
`
`No
`
`No
`
`N/A
`
`Set
`
`Not set
`
`Not set
`
`Not set
`
`N/A
`
`N/A
`
`No
`
`Yes
`
`Yes
`
`N/A
`
`N/A
`
`N/A
`
`Yes
`
`No
`
`None
`
`STALL
`
`ACK
`
`ACK
`
`NAK
`
`8.4.6.4 Function Response to a SETUP Transaction
`SETUP defines a special type of host-to-function data transaction that permits the host to initialize an
`endpoint's synchronization bits to those of the host. Upon receiving a SETUP token, a function must accept
`the data. A function may not respond to a SETUP token with either STALL or NAK, and the receiving
`function must accept the data packet that follows the SETUP token. If a non-control endpoint receives a
`SETUP token, it must ignore the transaction and return no response.
`
`8.5 Transaction Packet Sequences
`
`The packets that comprise a transaction varies depending on the endpoint type. There are four endpoint
`types: bulk, control, interrupt, and isochronous.
`
`A host controller and device each require different state machines to correctly sequence each type of
`transaction. Figures in the following sections show state machines that define the correct sequencing of
`packets within a transaction of each type. The diagrams should not be taken as a required implementation,
`but to specify the required behavior.
`
`Figure 8-17 shows the legend for the state machine diagrams. A circle with a three-line border indicates a
`reference to another (hierarchical) state machine. A circle with a two-line border indicates an initial state.
`A circle with a single-line border represents a simple state.
`
`209
`
`PA_0001419
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`- Contains other state machines
`
`- Initial state of a state machine
`
`- State in a state machine
`
`- Entry and exit of state machine
`
`- Joint used to connect transitions
`
`8
`
`I
`
`I
`
`Condition
`1 --A-c-ti-on_s _ _ ~ - Transition: taken when condition
`is true and performs actions
`
`~ - - - - - - -~
`
`Figure 8-17. Legend for State Machines
`
`The "tab" shapes with arrows are the entry or exit (respectively in the legend) to/from the state machine.
`The entry/exit relates to another state in a state machine at a higher level in the state machine hierarchy.
`
`A diamond Uoint) is used to join several transitions to a common point. A joint allows a single input
`transition with multiple output transitions or multiple input transitions and a single output transition. All
`conditions on the transitions of a path involving a joint must be true for the path to be taken. A path is
`simply a sequence of transitions involving one or more joints.
`
`A transition is labeled with a block with a line in the middle separating the (upper) condition and the (lower)
`actions. The condition is required to be true to take the transition. The syntax for actions and conditions is
`VHDL. The actions are performed if the transition is taken. A circle includes a name in bold and
`optionally one or more actions that are performed upon entry to the state.
`
`The host controller and device state machines are in a context as shown in Figure 8-18. The host controller
`determines the next transaction to run for an endpoint and issues a command (HC _ cmd) to the host
`controller state machines. This causes the host controller state machines to issue one or more packets to
`move over the downstream bus (HSDl).
`
`The device receives these packets from the bus (HSD2), reacts to the received packet, and interacts with its
`function(s) via the state of the corresponding endpoint (in the EP _array). Then the device may respond with
`a packet on the upstream bus (HSUl ). The host controller state machines can receive a packet from the bus
`(HSU2) and provide a result of the transaction back to the host controller (HC _resp). The details of what
`packets are sent on the bus is determined by the transfer type for the endpoint and what bus activity the state
`machines observe.
`
`The state machines are presented in a hierarchical form. Figure 8-19 shows the top level state machines for
`the host controller. The non-split transactions are presented in the remainder of this chapter. The split
`transaction state machines (HC_Do_start and HC_Do_complete) are described and shown in Chapter 11.
`
`210
`
`PA_0001420
`
`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`common to endpoint types are presented first. The lowest level endpoint type specific state machines are
`presented in each following endpoint type section.
`
`HC _Do_ nonsplit
`
`HC HS BCO
`
`HC Do BCINTO
`
`HC Do BCINTI
`
`HC Do IsochO
`
`HC Do Isochl
`
`Figure 8-20. Host Controller Non-split Transaction State Machine Hierarchy Overview
`
`Device Process trans
`
`Dev do OUT
`I Dev Do IsochO
`
`I Dev Do BCINTO
`
`I Dev_HS_BCO
`
`Dev do IN
`I Dev Do Isochl
`
`I Dev Do BCINTI
`
`I Dev_ HS _ping
`
`Figure 8-21. Device Transaction State Machine Hierarchy Overview
`
`212
`
`PA_0001422
`
`

`

`

`

`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`8.5.1 NAK Limiting via Ping Flow Control
`Full-/low-speed devices can have bulk/control endpoints that take time to process their data and, therefore,
`respond to OUT transactions with a NAK handshake. This handshake response indicates that the endpoint
`did not accept the data because it did not have space for the data. The host controller is expected to retry the
`transaction at some future time when the endpoint has space available. Unfortunately, by the time the
`endpoint NAKs, most of the full-/low-speed bus time for the transaction had been used. This means that the
`full-/low-speed bus has poor utilization when there is a high frequency ofNAK'd OUT transactions.
`
`High-speed devices must support an improved NAK mechanism for Bulk OUT and Control endpoints and
`transactions. Control endpoints must support this protocol for an OUT transaction in the data and status
`stages. The control Setup stage must not support the PING protocol.
`
`This mechanism allows the device to tell the host controller whether it has sufficient endpoint space for the
`next OUT transaction. If the device endpoint does not have space, the host controller can choose to delay a
`transaction attempt for this endpoint and instead try some other transaction. This can lead to improved bus
`utilization. The mechanism avoids using bus time to send data until the host controller knows that the
`endpoint has space for the data.
`
`The host controller queries the high-speed device endpoint with a PING special token. The PING special
`token packet is a normal token packet as shown in Figure 8-5 . The endpoint either responds to the PING
`with a NAK or an ACK handshake.
`
`A NAK handshake indicates that the endpoint does not have space for a wMaxPacketSize data payload. The
`host controller will retry the PING at some future time to query the endpoint again. A device can respond to
`a PING with a NAK for long periods of time. A NAK response is not a reason for the host controller to
`retire a transfer request. If a device responds with a NAK in a (micro)frame, the host controller may choose
`to issue the next transaction in the next blnterval specified for the endpoint. However, the device must be
`prepared to receive PIN Gs as sequential transactions, e.g., one immediately after the other.
`
`An ACK handshake indicates the endpoint has space for a wMaxPacketSize data payload. The host
`controller must generate an OUT transaction with a DATA phase as the next transaction to the endpoint.
`The host controller may generate other transactions to other devices or endpoints before the OUT /DAT A
`transaction for this endpoint.
`
`If the endpoint responds to the OUT /DAT A transaction with an ACK handshake, this means the endpoint
`accepted the data successfully and has room for another wMaxPacketSize data payload. The host controller
`continues with OUT/DATA transactions (which are not required to be the next transactions on the bus) as
`long as it has transactions to generate.
`
`If the endpoint instead responds to the OUT/DATA transaction with a NYET handshake, this means that the
`endpoint accepted the data but does not have room for another wMaxPacketSize data payload. The host
`controller must return to using a PING token until the endpoint indicates it has space.
`
`217
`
`PA_0001427
`
`

`

`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`8.5.2 Bulk Transactions
`Bulk transaction types are characterized by the ability to guarantee error-free delivery of data between the
`host and a function by means of error detection and retry. Bulk transactions use a three-phase transaction
`consisting of token, data, and handshake packets as shown in Figure 8-30. Under certain flow control and
`halt conditions, the data phase may be replaced with a handshake resulting in a two-phase transaction in
`which no data is transmitted. The PING and NYET packets must only be used with devices operating at
`high-speed.
`
`oken
`
`ata
`
`andshake
`
`Error
`
`Idle
`
`D Host D
`
`Function
`
`Figure 8-30. Bulk Transaction Format
`
`When the host is ready to receive bulk data, it issues an IN token. The function endpoint responds by
`returning either a data packet or, should it be unable to return data, a NAK or STALL handshake. NAK
`indicates that the function is temporarily unable to return data, while STALL indicates that the endpoint is
`permanently halted and requires USB System Software intervention. If the host receives a valid data
`packet, it responds with an ACK handshake. If the host detects an error while receiving data, it returns no
`handshake packet to the function.
`
`When the host is ready to transmit bulk data, it first issues an OUT token packet followed by a data packet
`( or PING special token packet, see Section 8.5 .1 ). If the data is received without error by the function, it
`will return o

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket