SA-1100 Developer’s Manual 11-59
Peripheral Control Module
11.8.1.3 Field Formats
Individual bits are assembled into groups called fields. Fields are used to construct packets and
packets are used to construct frames or transactions. The seven USB field types include: sync,
packet identifier, address, endpoint, frame number, data, and CRC fields.
A sync is preceded by the idle state on the USB bus and is always the first field of every packet.
The first bit of a sync field signals the start of packet (SOP) to the UDC or host. A sync is 8 bits
wide and consists of seven zeros followed by a one (0x80).
The packet identifier (PID) is 1 byte wide and always follows the sync field. The first 4 bits contain
an encoded value that represents packet type (token, data, handshake, special), packet format, and
type of error detection. The last four bits contain a check field that ensures the PID is transmitted
without errors. The check field is generated by performing a ones complement of the PID. The UDC
automatically XORs the PID and check field and takes the appropriate action (as prescribed by the
USB standard) if the result does not contain all ones, indicating an error has occurred in transmission.
The UDC’s three endpoints are accessed using the address and endpoint fields. The address field
contains 7 bits and permits 128 unique devices to be placed on the USB. After the SA-1100 is reset,
or a reset is signalled via the USB bus, the UDC (and all other 127 possible devices) is assigned the
default address of zero. The host is then responsible for assigning unique addresses for each device
on the bus. This is performed in the enumeration process one device at a time. Once the host
assigns the UDC an address, it responds only to transactions addressed to it. The address field is
transmitted in every packet and follows the PID field.
When the UDC detects that a packet is addressed to it, the endpoint field is used to determine
which of the UDC’s three endpoints are being addressed. The endpoint field is 4 bits. However,
only the encodings for endpoints 0 through 2 are allowed. The endpoint field follows the address
field. Table 11-11 shows the valid values for the endpoint field.
.
The frame number is an 11-bit field that is incremented by the host each time a frame is
transmitted. When it reaches its maximum value of 2047 (0x7FF), it rolls over. It is transmitted in
the start of frame (SOF) packet, which is output by the host in 1 ms intervals. The frame number
field is used only by device controllers to control isochronous transfers, and therefore, does not
affect the UDC. Data fields are used to transmit the bulk data between the host and the UDC. A
data field is made up of 0 to 1023 bytes. Each byte is transmitted LSB first.
Cyclic redundancy check fields are used to detect errors introduced during transmission of token
and data packets, and is applied to all the fields in the packet except the PID field (recall the PID
contains its own 4-bit ones complement check field for error detection). Token packets use a 5-bit
CRC (x
5
+x
2
+1) and data packets use a 16-bit CRC (x
16
+x
15
+x
2
+1). For both CRCs, the checker is
reset to all ones at the start of each packet.
Table 11-11. Endpoint Field Addressing
Endpoint Field Value UDC Endpoint Selected
0000 Endpoint 0
0001 Endpoint 1
0010 Endpoint 2
0011 Invalid
01xx Invalid
10xx Invalid
11xx Invalid